PL/SQL为所有数据操纵语句和单行查询语句隐式声明游标,对于此类游标,用户不能直接命名和控制。当运行数据操纵语句时,PL/SQL打开一个内建游标并处理结果。Oracle预先定义一个名为SQL的隐式游标,通过检查隐式游标的属性可以获得与最近执行的SQL语句相关的信息。
数据操纵语句的结果保存在4个游标属性中,这些属性用于控制程序流程或者了解程序的状态。现介绍一般游标的这4个属性的作用。
(1)%ISOPEN
布尔型,用于判断游标是否已经打开,如果打开,则返回TRUE;否则,返回FALSE。
(2)%FOUND
布尔型,用于判断最近一次的数据提取(FETCH)语句是否提取到了记录,如果提取到,则返回TRUE;否则,返回FALSE,而在游标打开之后,第一次提取之前,该属性的值为NULL。
(3)%NOTFOUND
布尔型,用于判断最近一次的数据提取语句是否提取到了记录,如果未提取到则返回TRUE;否则,返回FALSE,而在游标打开之后,第一次提取之前,该属性的值为NULL。(www.daowen.com)
(4)%ROWCOUNT
数值型,用于返回当前已经从游标中提取的行数,在游标打开之后,第一次提取之前,该属性的值为0。
隐式游标不同于其他游标,因用户不能直接命名和控制,所以其属性状态会有所不同。
在执行任何数据操纵语句前,%FOUND和%NOTFOUND的值都是NULL。%FOUND的属性值为TRUE的情况包括:INSERT后;DELETE和UPDATE后,且至少有一行被DELETE或UPDATE;SELECT INTO至少返回一行。当%FOUND为TRUE时,%NOTFOUND则为FALSE,反之亦然。
在执行任何数据操纵语句之前,%ROWCOUNT的值都是NULL。对于SELECT INTO语句,如果执行成功,则%ROWCOUNT的值为1;如果没有成功,则%ROWCOUNT的值为0,同时产生一个异常NO_DATA_FOUND。
对于隐式游标而言,%ISOPEN总是FALSE,这是因为隐式游标在DML语句执行时打开,在结束时就立即关闭。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。