You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

可以通过数据字典快速生成打印代码,避免手动敲所有字段:

  1. 先执行查询获取你自定义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 = '你的数据库用户名';
  1. 把查询返回的所有print_code结果复制到测试块的循环里即可,几十上百个字段也只需要10秒就能生成打印代码。

内容的提问来源于stack exchange,提问作者Christian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:39:03