重赏!关于ORACLE中的游标语句“fetch 游标 INTO A1,A2,A3”这类用法问题 40C

就是“fetch 游标 INTO A1,A2,A3”这种语句,一般我们都得把A1,A2,A3这种待赋值的变量先写死在SQL语句中,但目前我事先并不确定要赋值的有多少个变量,有可能只有A1,也有可能有A1,A2,A3一直到A10,所以我想问问这种语句INTO后面的要赋值的变量能否灵活一点写,比如我先写成AA:=‘A1,A2,A3,A4,A5,A6’,然后再写fetch 游标 INTO AA,这样就等同于fetch 游标 INTO A1,A2,A3,A4,A5,A6。但我不知道这样写程序会否报错,如果不行,有没有其他类似的方法?求各位高手指教!

4个回答

提供一个方法,不知道是否能满足你要求。

定义一个varchar2(4000)的变量。

查询的时候。把所有字段按分隔符连成一个字段
select id || ',' || id || ',' || id || ',' || id || ',' || id from pub_log
fetch 的时候,fetch 到变量
在循环中,再用类似split 的方式去取得结果。

定义一个游标变量就可以了吧。
cursor a is select ......;
b a%rowtype;

for b in a loop
....

v_sql :='fetch 游标 INTO';
v_parameter := 'A1,A2,A3';

execute immediate v_sql || v_parameter;

如果知道游标的结构,使用type来接收: r_cur c_cur%rowtype形式
自定义TYPE也行

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐