oracle游标循环while,Oracle的游标使⽤⽅法三种循环
例: 游标 LOOP循环游标
SET SERVERIUTPUT ON
DECLARE
R_emp EMP%ROWTYPE;
CURSOR c_emp IS SELECT * FROM emp;
BEGIN
OPEN c_emp;
LOOP
FETCH c_emp INTO r_emp;
EXIT WHEN c_emp%NOTFOUND;
DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||ame||'is'|| r_emp.salary);
END LOOP;
CLOSE c_emp;
END;
带参数的游标
DECLARE
cursor c_columns(t_table_name varchar) is select column_name from user_tab_columns where table_name = t_table_name; BEGIN
open c_columns('TABLE_NAME');
fetch c_columns into v_column;
if c_columns%found then
dbms_output.put_line('列名为:'||v_column);
end if;
close c_columns;
END;
第⼆种:使⽤while循环
open c1;
fetch c1 into v_name,v_job;
while c1%found loop
……
fetch c1 into v_name,v_job;
end loop;
close c1;
注意 这⾥⽤到了两个fetch语句!
第⼀个fetch语句是把游标的第⼀⾏记录赋值给相关变量,第⼆个fetch语句是让游标指向下⼀条记录。如果没有第⼆个语句的话,即为死循环,不停地执⾏loop内的代码。
总之,使⽤while来循环处理游标是最复杂的⽅法。
第三种: for循环
for v_pos in c1 loop
v_name:= ame;
v_job:= v_pos.ejob;
end loop;
可见for循环是⽐较简单实⽤的⽅法。
⾸先,它会⾃动open和close游标。解决了你忘记打开或关闭游标的烦恼。
其它,⾃动定义了⼀个记录类型及声明该类型的变量,并⾃动fetch数据到这个变量中。
我们需要注意v_pos 这个变量⽆需要在循环外进⾏声明,⽆需要为其指定数据类型。
它应该是⼀个记录类型,具体的结构是由游标决定的。
这个变量的作⽤域仅仅是在循环体内。
oracle游标的使用把v_pos看作⼀个记录变量就可以了,如果要获得某⼀个值就像调⽤记录⼀样就可以了。
如v_pos.pos_type
由此可见,for循环是⽤来循环游标的最好⽅法。⾼效,简洁,安全。
总结
如果觉得编程之家⽹站内容还不错,欢迎将编程之家⽹站推荐给程序员好友。
本图⽂内容来源于⽹友⽹络收集整理提供,作为学习参考使⽤,版权属于原作者。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。