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
需要声明变量DONOT! IN
之后的语句决定数据类型(Record/Primitive)
@OracleUser 谢谢老兄!
为什么不直接运行update emp set sal = sal + 10000 where sal < 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 数据库上无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章