博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PLSQL中对cursor 使用的小例子
阅读量:6621 次
发布时间:2019-06-25

本文共 1122 字,大约阅读时间需要 3 分钟。

开始

SET SERVEROUTPUT ON;DECLARE  v_empno emp.empno%TYPE;  v_ename emp.ename%TYPE;    CURSOR emp_cursor IS  SELECT empno,ename from emp where empno<>1000;  BEGINLOOP  IF NOT emp_cursor%ISOPEN  THEN     OPEN emp_cursor;  END IF;     FETCH emp_cursor INTO  v_empno,v_ename;   EXIT WHEN emp_cursor%NOTFOUND;   dbms_output.put_line('empno is:' || v_empno || ' emp name is:' || v_ename);    END LOOP;END;/

运行结果

anonymous block completedempno is:7369 emp name is:SMITHempno is:7499 emp name is:ALLENempno is:7521 emp name is:WARDempno is:7566 emp name is:JONESempno is:7654 emp name is:MARTINempno is:7698 emp name is:BLAKEempno is:7782 emp name is:CLARKempno is:7788 emp name is:SCOTTempno is:7839 emp name is:KINGempno is:7844 emp name is:TURNERempno is:7876 emp name is:ADAMSempno is:7900 emp name is:JAMESempno is:7902 emp name is:FORDempno is:7934 emp name is:MILLER

要注意的一点:FETCH 后,马上进行EXIT 比较好。这是因为如果不是这样,在循环中还有来一次,此时可能有干了一些操作,这回导致出现问题。

还有一点,由于 第一次FETCH之前,%NOTFOUND 的值为空。

所以如果 FETCH 从来没有真的成功过,那么 EXIT WHEN emp_cusor%NOTFOUND 有可能一直为NULL,这样就一直在循环里无法退出。所以,更好的写法是:

EXIT WHEN emp_cursor%NOTFOUND OR emp_cursor%NOTFOUND IS NULL

结束 

转载地址:http://aicpo.baihongyu.com/

你可能感兴趣的文章
[Oracle]如何获得出现故障时,客户端的详细连接信息
查看>>
spring-boot-starter-actuator(健康监控)配置和使用
查看>>
BabeLua常见问题
查看>>
刚装上最新node,npm install报这个错误!求ndoe大神解答!!!
查看>>
iOS设置拍照retake和use按钮为中文简体
查看>>
Elasticsearch 基础概念知识
查看>>
Additional information: 对 COM 组件的调用返回了错误 HRESULT E_FAIL
查看>>
python -- ajax数组传递和后台接收
查看>>
Spring之AOP二
查看>>
压缩解压缩
查看>>
SPI协议及其工作原理浅析【转】
查看>>
ab和jmeter进行GET/POST压力测试的使用心得和比较
查看>>
Porting .Net RSA xml keys to Java
查看>>
用户命令切换-命令su
查看>>
检测 nginx.conf 是否配置正确
查看>>
[ReactVR] Add Lighting Using Light Components in React VR
查看>>
String hashCode 方法为什么选择数字31作为乘子
查看>>
最长公共子序列|最长公共子串|最长重复子串|最长不重复子串|最长回文子串|最长递增子序列|最大子数组和...
查看>>
测试妹子的呐喊:为什么总是收不到推送?
查看>>
linux NFS
查看>>