oracle游标循环内给变量赋值_oracle超出打开游标的最大数

oracle游标循环内给变量赋值_oracle超出打开游标的最大数【Oracle】游标-2显示游标属性1、%FOUND如果FETCH语句返回一行,则%FOUND为TRUE,否则为FALSE;如果在打开游标之前或者关闭游标之后使用该语句,返回ORA-1001错误;打开游标后,没有使用FETCH就使用该语句,返回NULL。2、

【Oracle】游标—2   
oracle游标循环内给变量赋值_oracle超出打开游标的最大数
oracle游标循环内给变量赋值_oracle超出打开游标的最大数   显示游标属性   1、%FOUND   如果FETCH语句返回一行,则%FOUND为TRUE,否则为FALSE;如果在打开游标之前或者关闭游标之后使用该语句,返回ORA-1001错误;打开游标后,没有使用FETCH就使用该语句,返回NULL。   2、%NOTFOUND   与%FOUND相反。   3、%ISOPEN   判断游标是否打开。如果已经打开,返回TRUE,否则返回FALSE。   4、%ROWCOUNT   返回游标FETCH行数。如果在打开游标之前或者关闭游标之后使用该语句,返回ORA-1001错误;打开游标后,没有使用FETCH就使用该语句,返回NULL。   例、给工资低于1200 的员工增加工资50。   DECLARE   v_empno emp.empno%TYPE;   v_sal emp.sal%TYPE;   CURSOR c IS SELECT empno, sal FROM emp;   BEGIN   OPEN c;   LOOP   FETCH c INTO v_empno, v_sal;   EXIT WHEN C%NOTFOUND;   IF v_sal<=1200 THEN   UPDATE emp SET sal=sal+50 WHERE empno=v_empno;   DBMS_OUTPUT.PUT_LINE(‘编码为’||v_empno||’工资已更新!’);   END IF;   DBMS_OUTPUT.PUT_LINE(‘记录数:’||C%ROWCOUNT);   END LOOP;   CLOSE c;   END;   在处理游标时,一般使用LOOP、WHILE循环处理游标的所有数据。   显示游标的FOR循环   PL/SQL提供游标FOR循环语句,自动执行游标的OPEN、FETCH、CLOSE语句和循环语句的功能。当进入循环时,游标FOR循环语句自动打开游标,并提取第一行游标数据,当程序处理完提取的数据后,游标FOR循环语句自动提取下一行数据供程序处理,当提取完结果集中的所有数据行后结束循环,并自动关闭游标。格式:   FOR index_variable IN cursor_name [value [, value]…] LOOP   – 游标数据处理代码   END LOOP;   其中:   index_variable为游标FOR循环语句隐含声明的索引变量,该变量为记录变量,其结构与游标查询语句返回的结构集合的结构相同。在程序中可以通过引用该索引记录变量素来读取所提取的游标数据,index_variable中各素的名称与游标查询语句选择列表中所制定的列名相同。如果在游标查询语句的选择列表中存在计算列,则必须为这些计算列指定别名后才能通过游标FOR 循环语句中的索引变量来访问这些列数据。   注:不要在程序中对游标进行人工操作;不要在程序中定义用于控制FOR循环的记录。   例、游标FOR循环   DECLARE   CURSOR c_sal IS SELECT empno, ename FROM emp;   BEGIN   –隐含打开游标   FOR v_sal IN c_sal LOOP   –隐含执行一个FETCH语句   DBMS_OUTPUT.PUT_LINE( to_char(v_sal.empno)||’—‘||v_sal.ename)) ;   –隐含监测c_sal%NOTFOUND   END LOOP;   –隐含关闭游标   END;   例、游标FOR 循环语句为游标传递参数。   DECLARE   CURSOR c1(dept_no NUMBER DEFAULT 10) IS   SELECT dname, loc FROM dept WHERE deptno <= dept_no;   BEGIN   DBMS_OUTPUT.PUT_LINE(‘dept_no参数值为30:’);   FOR c1_rec IN c1(30) LOOP   DBMS_OUTPUT.PUT_LINE(c1_rec.dname||’—‘||c1_rec.loc);   END LOOP;   DBMS_OUTPUT.PUT_LINE(CHR(10)||’使用默认的dept_no参数值10:’);   FOR c1_rec IN c1 LOOP   DBMS_OUTPUT.PUT_LINE(c1_rec.dname||’—‘||c1_rec.loc);   END LOOP;   END;   欢迎指正……

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/41750.html

(0)
上一篇 2024年 9月 7日 上午8:39
下一篇 2024年 9月 7日 上午8:43

相关推荐

关注微信