oracle中的sql%found、sql%notfound、sql%rowcount和sql%isopen

在执行

DML

insert

update

delete

)语句时,可以用到以下三个隐式游标(游标是维护

查询结果的内存中的一个区域,运行

DML

时打开,完成时关闭,用

sql%isopen

检查是否打

开):

 

  

sql%found 

(布尔类型,默认值为

null

 

  

sql%notfound

(布尔类型

,

默认值为

null

 

  

sql%rowcount(

数值类型默认值为

0) 

  

sql%isopen(

布尔类型

  

当执行一条

DML

语句后,

DML

语句的结果保存在四个游标属性中,这些属性用于控制程序流

程或者了解程序的状态。当运行

DML

语句时,

PL/SQL

打开一个内建游标并处理结果,游标

是维护查询结果的内存中的一个区域,

游标在运行

DML

语句时打开,

完成后关闭。

隐式游标

只使用

SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT

三个属性

.SQL%FOUND,SQL%NOTFOUND

是布尔

值,

SQL%ROWCOUNT

是整数值。

 

 

 

SQL%FOUND

SQL%NOTFOUND 

 

 

在执行任何

DML

语句前

SQL%FOUND

SQL%NOTFOUND

的值都是

NULL,

在执行

DML

语句后,

SQL%FOUND

的属性值将是:

 

 

 

. TRUE :INSERT 

 

 

. TRUE :DELETE

UPDATE

,至少有一行被

DELETE

UPDATE. 

 

 

. TRUE :SELECT INTO

至少返回一行

 

 

 

SQL%FOUND

TRUE

,SQL%NOTFOUND

FALSE

 

  

  

 

 

SQL%ROWCOUNT 

 

 

在执行任何

DML

语句之前,

SQL%ROWCOUNT

的值都是

NULL,

对于

SELECT 

INTO

语句,如果

执行成功,

SQL%ROWCOUNT

的值为

1,

如果没有成功或者没有操作

(

update

insert

delete

0

条),

SQL%ROWCOUNT

的值为

0. 

  

  

 

 

SQL%ISOPEN 

 

 

SQL%ISOPEN

是一个布尔值,如果游标打开,则为

TRUE, 

如果游标关闭,则为

FALSE.

于隐式游标而言

SQL%ISOPEN

总是

FALSE

,这是因为隐式游标在

DML

语句执行时打开,结束

时就立即关闭。

 

  

no_data_found 

sql%notfound 

以及

sql%rowcount 

的区别:

 

  

NO_DATA_FOUND

:该异常可以在两种不同的情况下出现:第一种:当

SELECT

。。。。

INTO

语的

 WHERE

子句

 

没匹配任何数据行时;第二种:试图引用尚未赋值的

PL/SQL 

index-by

元素时。

 

  

SQL%NOTFOUND

:是隐匿游标的属性,当没有可检索的数据时,该属性为:

TRUE

;常作为检索

循环退出的条件。若某

UPDATE

DELETE

语句的

WHERE

子句不匹配任何数据行,该属性为:

TRUE

,但不并不出现

NO_DATA_FOUND

异常

  

SQL%ROWCOUNT

:该数字属性返回了到目前为止,游标所检索

数据库

行的个数。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值