PL/SQL 如何动态传入SQL语句 返回查询结果

小德 2015-09-25 09:26:59
功能要求:
传入一条简单的查询语句 eg:select a,b,c,... from X
表名不定,列名数目、类型也不定,要求返回查询结果,即每列的值。
...全文
448 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuzhe_521 2015-10-09
  • 打赏
  • 举报
回复
dbms_sql
jdsnhan 2015-10-05
  • 打赏
  • 举报
回复
你仅是用put做展现还是另有他用?
beyon2008 2015-09-30
  • 打赏
  • 举报
回复
过程里定义一个prm_OUTRESULT OUT sys_refcursor返回参数,返回结果集就赋值给返回参就行了,过程最后OPEN prm_OUTRESULT for p_slq
风影萧诺 2015-09-28
  • 打赏
  • 举报
回复
写个脚本调吧,分部把列查出来,让后存储过程去用。
小德 2015-09-25
  • 打赏
  • 举报
回复
我能想到的办法大致如下了: DECLARE l_sqltext VARCHAR2(2000); type t_cur is ref cursor; v_ser t_cur; TYPE array_t IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER; rec_array array_t; BEGIN l_sqltext := 'select oh.header_id/*,oh.order_number,oh.ordered_date*/ from oe_order_headers_all oh where oh.header_id in(2536,2440,2498)';--可以是任意有效的查询sql文本 l_curid := dbms_sql.open_cursor(); open v_ser for l_sqltext; FETCH v_ser BULK COLLECT INTO rec_array; FOR i IN rec_array.FIRST .. rec_array.LAST LOOP dbms_output.put_line(rec_array(i)); END LOOP; END;
小德 2015-09-25
  • 打赏
  • 举报
回复
你好,返回游标变量如何解析里面的列呢,因为列名未知的,就算能通过SQL语句解析到表名和列名,该怎么用列名去解析游标
卖水果的net 2015-09-25
  • 打赏
  • 举报
回复


create or replace procedure ccc(p_sql varchar2, p_cursor out sys_refcursor) 
as
begin
  OPEN p_cursor FOR p_sql;
end;

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧