注册
存储过程中关于游标记录注意问题
培训园地/ 文章详情 /

存储过程中关于游标记录注意问题

飞翔的鸵鸟 2023/07/31 1087 0 0
存储过程作为一个重要的功能,我们在跑批或者其他业务中会不时的碰到游标的记录情况,有一点需要特别注意,那就是对于基于游标的记录,一定要在游标声明之后才能声明它,要不然会报编译失败的信息,以下面为例。

在存储过程中,显示员工工资(SAL列)大于3000的姓名,那么基于游标的记录的正确的写法为:
Create Or Replace Procedure jnb01
As
Declare Cursor EMP _Cur01 Is
Select *
From EMP
Where Sal>3000; ---声明游标
ENAME_rec EMP_Cur01%RowType;----声明变量
Begin
Open EMP_Cur01;
Loop
Fetch EMP_Cur01 Into ENAME_rec;
Exit When EMP_Cur01%NotFound;
Print ('员工是'||ENAME_rec.ENAME);
End Loop;
End;
执行结果显示成功。
那么如果先声明基于游标的记录,会出现什么情况,如下:
Create Or Replace Procedure jnb02
As
Declare ENAME_rec EMP_Cur01%RowType; ---声明记录
Cursor EMP_Cur01 Is
Select *
From EMP
Where Sal>3000; ---声明游标
Begin
Open EMP_Cur01;
Loop
Fetch EMP_Cur01 Into ENAME_rec;
Exit When EMP_Cur01%NotFound;
Print ('员工是'||ENAME_rec.ENAME);
End Loop;
End;
执行直接报错,报错信息显示存储过程编辑失败。所以,声明的时候要特别注意,不要进行变换。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服