Oracle PL/SQL如何简便输出自定义记录集合的所有字段值
Oracle自定义RECORD集合输出简化方案
方案1:Oracle 12cR2及以上版本(推荐)
直接用原生JSON序列化能力,无需逐个指定字段,一键输出整条记录的所有字段值:
declare o_table TEST.PROD_T; begin test.get_prod( MAXROWS => 0, NROWS => 99, o_table => o_table); for i in 1..o_table.count loop -- 直接序列化整条记录为格式化JSON输出 dbms_output.put_line('===== 第'||i||'条记录 ====='); dbms_output.put_line(json_serialize(json_object(o_table(i)) pretty)); end loop; end; /
输出的结果会自动包含所有字段名和对应的值,结构化清晰,哪怕后续RECORD新增/删除字段也不需要修改打印代码。
方案2:IDE可视化调试(无需写代码)
如果你用的是Oracle SQL Developer、PL/SQL Developer这类主流Oracle开发工具:
- 右键点击
test.get_prod存储过程,选择「测试」 - 填入入参
MAXROWS、NROWS的值后点击运行 - 输出参数
o_table会自动以表格形式展示所有字段和记录,不需要写任何打印逻辑
方案3:12c以下低版本Oracle
可以通过数据字典快速生成打印代码,避免手动敲所有字段:
- 先执行查询获取你自定义RECORD的所有字段名:
select 'dbms_output.put_line('''||ATTR_NAME||': ''|| o_table(i).'||ATTR_NAME||');' as print_code from ALL_PLSQL_TYPE_ATTRS where PACKAGE_NAME = 'TEST' and TYPE_NAME = 'REC_TT' and OWNER = '你的数据库用户名';
- 把查询返回的所有
print_code结果复制到测试块的循环里即可,几十上百个字段也只需要10秒就能生成打印代码。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

