【请问】前辈们,关于引用游标的一个小疑点
【请教】前辈们,关于引用游标的一个小问题今天学到了游标,有道题老是报“ORA-06550 必须声明组件错误。”刚接触
【请教】前辈们,关于引用游标的一个小问题
今天学到了游标,有道题老是报“ORA-06550 必须声明组件错误。”
刚接触Oracle,还请前辈们不吝赐教啊~
题目:使用引用游标查询EMP表,随着外界传入的字段列表不同,输出不同的查询结果。
要求输入三个不同字段;
我的做法:
麻烦帮忙看看错哪里吧,先谢谢了~
[解决办法]换种方式写一下
declare type newcur is ref cursor;
mycur newcur; cmd1 varchar2(10);
cmd2 varchar2(10);
cmd3 varchar2(10);
--curRow emp%rowtype;
c1 varchar2(100);
c2 varchar2(100);
c3 varchar2(100);
sql1 varchar(200); begin
cmd1 :='&字段1'; cmd2 :='&字段2'; cmd3 :='&字段3';
--sql1 := 'select '
[解决办法] cmd1
[解决办法]' as c1,'
------解决方案--------------------
cmd2
[解决办法]' as c2,'
[解决办法] cmd3
[解决办法]' as c3 from emp';
sql1 := 'select '
[解决办法] cmd1
[解决办法]' ,'
[解决办法] cmd2
[解决办法]','
[解决办法] cmd3
[解决办法]' from emp';
dbms_output.put_line( 'sql1='
[解决办法]sql1);
open mycur for sql1;
loop
fetch mycur into c1,c2,c3;
dbms_output.put_line(c1
[解决办法]' '
[解决办法]c2
[解决办法]' '
[解决办法]c3);exit when mycur%notfound;
end loop;
close mycur;end;
/
[解决办法]Good Job!
动态sql游标,Oracle并不能预知sql的传出值会有几个。
LS用的FETCH XXX INTO C1,C2,C3,等于告诉Oracle上面的动态SQL是有三个传出参数。