问题描述
我想在使用refcursor返回结果的同时返回列的标题和数据。
这里我们在文件中获取光标结果。因此,我们需要标头作为数据中的第一行。
(在当前情况下,我们有150多个列)
create table fetch_header_rows ( company_name varchar2(500), Company_id number, ammount number(20,8), data_commnets varchar2(500) ); insert into fetch_header_rows values('company1' , 1, 128.80,'test data1'); insert into fetch_header_rows values('company2' , 2, 129.80,'test data1'); insert into fetch_header_rows values('company3' , 3, 128,'test data1'); insert into fetch_header_rows values('company4' , 4, 100.80,'test data1'); create or replace procedure SP_fetch_header_rows(data_fetch out sys_refcursor ) as begin open data_fetch for select * from fetch_header_rows; end;复制
这里我们在文件中获取光标结果。因此,我们需要标头作为数据中的第一行。
(在当前情况下,我们有150多个列)
专家解答
您可以使用dbms_sql.to_cursor_number将其转换为dbms_sql游标,然后使用describe_columns获取列名:
declare cur sys_refcursor; cur_handle number; rec_tab dbms_sql.desc_tab; col_cnt integer; begin SP_fetch_header_rows ( cur ); cur_handle := dbms_sql.to_cursor_number ( cur ) ; dbms_sql.describe_columns ( cur_handle, col_cnt, rec_tab ); for i in 1 .. rec_tab.count loop dbms_output.put_line ( rec_tab(i).col_name ); end loop; dbms_sql.close_cursor ( cur_handle ); end; / COMPANY_NAME COMPANY_ID AMMOUNT DATA_COMMNETS复制
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
548次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
469次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
450次阅读
2025-04-01 11:08:44
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
445次阅读
2025-04-08 09:12:48
墨天轮个人数说知识点合集
JiekeXu
445次阅读
2025-04-01 15:56:03
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
438次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
414次阅读
2025-04-22 00:13:51
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
413次阅读
2025-04-20 10:07:02
Oracle 19c RAC更换IP实战,运维必看!
szrsu
393次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
359次阅读
2025-04-17 17:02:24