我有个循环 是这样的 for xx in (select col_A,col_B from tableA where col_C=C_value) loopbegin......end end loop;然后我测试了下 in里面的select 语句后面where 的 条件没起作用,就是说带条件 就查出5天数据,不带条件 好几百条数据。结果循环就是按好几百循环的。这个是什么问题 C_value是传进来的参数 ,我调试看了 有值 也没有问题
1、FOR循环用法,以下是SQL源码:DECLARE x number; --声明变量BEGIN x := 1; --给初值 FOR x IN REVERSE 1 .. 10 LOOP --reverse由大到小 DBMS_OUTPUT.PUT_LINE('x=' || x); END LOOP; DBMS_OUTPUT.PUT_LINE('end loop x=' || x); --x=1END。
2、输出结果如图。
3、GOTO用法,以下是SQL源码:DECLARE x number;BEGIN x := 0; <<repeat_loop>> --循环点 x := x + 1; DBMS_OUTPUT.PUT_LINE(X); IF x < 9 THEN --当x的值小于9时,就goto到repeat_loop GOTO repeat_loop; END IF;END。
4、WHILE循环用法,以下是SQL源码:DECLARE x number;BEGIN x := 0; WHILE x < 9 LOOP x := x + 1; DBMS_OUTPUT.PUT_LINE('x=' || x); END LOOP; DBMS_OUTPUT.PUT_LINE('end loop x=' || x);END。
5,输出对应结果。
6、LOOP循环用法,以下是SQL源码:DECLARE x number;BEGIN x := 0; LOOP x := x + 1; EXIT WHEN x > 9; DBMS_OUTPUT.PUT_LINE('x=' || x); END LOOP; DBMS_OUTPUT.PUT_LINE('end loop x=' || x);END。
本回答被网友采纳换成显式带参数的游标就可以了,for xx in (select 语句) 这是隐式游标,这个结构中不能带参数,或者说普通的游标,隐式或显式的都不能带参数,使用参数游标或引用(动态)游标。改成这样:
declare