加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle的游标使用方法 三种循环

发布时间:2020-12-12 15:06:23 所属栏目:百科 来源:网络整理
导读:例: 游标 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'||r_emp.ename||'is'
例: 游标 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'||r_emp.ename||'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:= v_pos.ename; v_job:= v_pos.ejob; … end loop; 可见for循环是比较简单实用的方法。 首先,它会自动open和close游标。解决了你忘记打开或关闭游标的烦恼。 其它,自动定义了一个记录类型及声明该类型的变量,并自动fetch数据到这个变量中。 我们需要注意v_pos 这个变量无需要在循环外进行声明,无需要为其指定数据类型。 它应该是一个记录类型,具体的结构是由游标决定的。 这个变量的作用域仅仅是在循环体内。 把v_pos看作一个记录变量就可以了,如果要获得某一个值就像调用记录一样就可以了。 如v_pos.pos_type 由此可见,for循环是用来循环游标的最好方法。高效,简洁,安全。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读