CURSOR 和 LOOP 在 Oracle 数据库上无法正常工作

Posted

技术标签:

【中文标题】CURSOR 和 LOOP 在 Oracle 数据库上无法正常工作【英文标题】:CURSOR and LOOP don't work correctly on Oracle database 【发布时间】:2014-04-30 10:04:55 【问题描述】:

我在 Oracle 数据库上的 PL-SQL 脚本有问题。这不能正常工作。我听说一种说法是无用的。我不知道是哪一个。

DECLARE
CURSOR emp_cur IS
SELECT ename, deptno, empno
FROM emp
WHERE sal <
2500;
emp_rec emp_cur%ROWTYPE;
BEGIN
FOR emp_rec IN emp_cur
LOOP
give_raise (emp_rec.empno, 10000);
END LOOP;
END;

【问题讨论】:

你得到哪个错误? emp_rec emp_cur%ROWTYPE; 不需要。因为FOR LOOP 需要声明变量DONOTIN 之后的语句决定数据类型(Record/Primitive) @OracleUser 谢谢老兄! 为什么不直接运行update emp set sal = sal + 10000 where sal &lt; 2055比基于逐行的方法更高效 【参考方案1】:

你可以试试这个方法。如果只在 for 循环中将游标用作迭代器,则无需显式声明游标。关于 emp_rec 的显式声明,我认为与 OracleUser2 相同。

DECLARE

BEGIN
  FOR emp_rec IN (select ename, deptno, empno from emp where sal < 2500)
  LOOP
      give_raise (emp_rec.empno, 10000);
  END LOOP;
END;

谢谢 问候

【讨论】:

以上是关于CURSOR 和 LOOP 在 Oracle 数据库上无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Oracle/PLSQL CURSOR FOR Loop

Oracle/PLSQL 在 BULK COLLECT 之后处理 for LOOP 中的所有数据

Oracle 学习----游标(使用无参光标cursor)

如何实现Oracle数据库中的动态游标

oracle for loop循环以及游标循环

CURSOR FOR LOOP 返回的查询数据