就是“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。但我不知道这样写程序会否报错,如果不行,有没有其他类似的方法?求各位高手指教!
提供一个方法,不知道是否能满足你要求。
定义一个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也行