Pl/sql存储过程中 游标返回值问题

Pl/sql存储过程中Executeimmediate‘createglobaltemporarytabletemp_s1(idint,namevarchar(20))a... Pl/sql存储过程中
Execute immediate ‘create global temporary table temp_s1(id int,namevarchar(20)) as select * from stu where age>18’
怎样用游标返回temp_s1中的内容?谢谢
展开
 我来答
BuddhaQQ
2012-12-18 · TA获得超过1764个赞
知道小有建树答主
回答量:860
采纳率:100%
帮助的人:1004万
展开全部
看到你刚才的问题了,看看我的回答,
补充:刚测了下,如果创建的是临时表,用create as select * from xxx,是没有数据的
创建后再执行一次插入
DECLARE
psqlstr VARCHAR2(200);
stmp VARCHAR2(200);
tname VARCHAR2(30);
BEGIN

tname := 'temp_s1'; -- 临时表名
stmp := 'select * from t1 where 1=1'; -- t1为源表,stmp为从源表查询数据的sql
psqlstr := 'create global temporary table '||tname||' as '||stmp;
EXECUTE IMMEDIATE psqlstr; -- 创建成功,但是临时表中无数据
psqlstr := 'insert into t1_temp '||stmp; -- 再插入一次数据
EXECUTE IMMEDIATE psqlstr;
END;
追问
谢谢您的耐心回答,不过我想要的结果是返回临时表temp_s1中的内容。我动态创建临时表,并且里面用select添加了内容,但不知道用什么方法把临时表中的内容返回到程序中。如果不是动态创建的表,用open 游标 for select 语句就可以,现在的问题是temp_s1是动态创建的!不知道怎么返回?谢谢
追答
搜一下dbms_sql中动态游标的定义方式
1. 创建临时表后,通过DBA_TAB_COLS查询该表包括哪些列,在DATA_TYPE判断类型
2. 通过DBMS_SQL动态游标来获取temp_s1中数据
关于动态游标,大体流程是open_cursor,define_column,excute_and_fetch,column_value,close_cursor
你搜一下方法吧
知识杂集
2012-12-18 · TA获得超过200个赞
知道小有建树答主
回答量:270
采纳率:0%
帮助的人:212万
展开全部
create or replace procedure test(v_cursor out sys_refcursor) as
begin
open v_cursor for select * from temp_s1;
end test;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
是勇敢
2012-12-17 · 希望快乐渡过第一天。
是勇敢
采纳数:914 获赞数:1799

向TA提问 私信TA
展开全部
你的执行代码呢?
把代码复制出来,可能助你分析一番
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式