`

关于NO_DATA_FOUND和%NOTFOUND

 
阅读更多
Oracle的NO_DATA_FOUND和%NOTFOUND两个保留字的用法不够了解,主要是它们从意义上是有些类似。其实它们的用法是有区别的,小结如下:
        SELECT  .  .  .  INTO  语句触发  NO_DATA_FOUND;
        当一个显示光标的 where 子句未找到时 触发 %NOTFOUND;
        当UPDATE或DELETE 语句的where 子句未找到时 触发 SQL%NOTFOUND;
        在光标的提取(Fetch)循环中要用 %NOTFOUND 或%FOUND 来确定循环的退出条件,不要用 NO_DATA_FOUND。





当执行一条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,如果没有成功,SQL%ROWCOUNT的值为0,同时产生一个异常NO_DATA_FOUND.

  SQL%ISOPEN
  SQL%ISOPEN是一个布尔值,如果游标打开,则为TRUE, 如果游标关闭,则为FALSE.对于隐式游标而言SQL%ISOPEN总是FALSE,这是因为隐式游标在DML语句执行时打开,结束时就立即关闭。
分享到:
评论

相关推荐

    oracle恢复工具-FY_Recover_Data

    15:33:44: 1033 truncated data blocks found. 15:33:44: 72622 records recovered in backup table SYS.TRUNTAB1$$2 15:33:44: Recovery completed. PL/SQL procedure successfully completed 从红色字体可以...

    Oracle Exception汇总(自定义Oracle异常)

    When no_data_found then Dbms_output.put_line(‘no_data_found’); ACCESS_INTO_NULL 为对象赋值前必需初始化对象。对应ORA-06530错误。 CASE_NOT_FOUND 使用CASE语句时在WHEN子句中没有包含必需的条件分支,...

    Oracle8i_9i数据库基础

    §14.2.4 关于NO_DATA_FOUND和%NOTFOUND 260 §14.2.5 SELECT FOR UPDATE 光标 261 §14.3 光标变量 262 §14.3.1 声明光标变量 262 §14.3.2 为光标变量分配存储空间 262 §14.3.3 打开光标变量 262 §14.3.4 关闭...

    数据库基础

    §14.2.4 关于NO_DATA_FOUND和%NOTFOUND 260 §14.2.5 SELECT FOR UPDATE 光标 261 §14.3 光标变量 262 §14.3.1 声明光标变量 262 §14.3.2 为光标变量分配存储空间 262 §14.3.3 打开光标变量 262 §14.3.4 关闭...

    gnutls-utils-3.6.16-4.el8.x86_64.rpm

    离线安装包,亲测可用

    ora10g客户端

    TNS-12560: Message 12560 not found; No message file for product=NETWORK, facility=TNS ns secondary err code: 0 nt main err code: 530 TNS-00530: Message 530 not found; No message file for product=...

    Laravel第三方包报class not found的解决方法

    今天小编就为大家分享一篇Laravel第三方包报class not found的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    squashfs1.3r3.tar.gz

    -noappend Do not append to existing filesystem on dest, write a new filesystem This is the default action if dest does not exist, or if no filesystem is on it -keep-as-directory If one ...

    MySQL 启动报错:File ./mysql-bin.index not found (Errcode: 13)

    主要介绍了MySQL 启动报错:File ./mysql-bin.index not found (Errcode: 13)的解决方法,需要的朋友可以参考下

    各个版本的itextsharp.rar

    假如您在使用的过程中 使用中文、日文、韩文等字体,遇到“Encoding 1252 data could not be found. Make sure you have correct international codeset assembly installed and enabled.”请参考 ...

    tomcrypt.h

    CRYPT_FILE_NOTFOUND, /* File Not Found */ CRYPT_PK_INVALID_TYPE, /* Invalid type of PK key */ CRYPT_PK_INVALID_SYSTEM,/* Invalid PK system specified */ CRYPT_PK_DUP, /* Duplicate key already in ...

    博途Wincc编译项目出现“内部错误”或者屏上显示乱码时的解决办法.docx

    博途Wincc编译项目出现“内部错误”或者屏上显示乱码时的解决办法

    ImpalaJDBC连接所需Jar

    包括 ImpalaJDBC3 ImpalaJDBC4 ImpalaJDBC41 三个版本的ImpalaJDBC连接所需Jar

    google api php client

    not support service accounts. Check with the specific API documentation if API calls return unexpected 401 or 403 errors. 1. Follow the instructions to [Create a Service Account]...

    Data Architecture

    There are many different types of data found in the corporation. The book lays out one perspective of data and describes – at a very high level – how that data is used (and is not used) in the ...

    虚拟网卡驱动源代码(原版)

    No warranty is attached; * we cannot take responsibility for errors or fitness for use. * * $Id: snull.c,v 1.21 2004/11/05 02:36:03 rubini Exp $ */ #include #include #include #include #...

    MNIST数据集(包含raw及preocessed)

    本资源是MNIST数据集(包含raw及preocessed),下载后将data文件夹放在与项目.py文件同一目录内,注意加载数据集时使用root='./data'加载。

    方正还原卡彻底清除程序CLear.zip

    No restore card installation found on the hard disk 硬盘上未发现保护卡驱动 Signal-OS installation found on the hard disk 硬盘上存在保留系统安装后的驱动 Multi-OSinstallation found on the hard disk ...

    端口查看工具

    active filter state and no filter state, as an alternative for 'Clear All Filters', which doesn't allow you to return back the filters. * Version 1.70: o Added /sort command-line option for ...

    p28412269_112040_WINNT.zip

    REBOOT 2 CELL NODES, CHECKFILE FOUND CORRUPTION BLOCK IN 3 UNDO DATAFILES 12982566 ORA-06550: DBMS_DRS PACKAGE DOES NOT EXIST ON NEW STANDBY DB AFTER SWITCHOVER 打开自述文件以查看所有 Bug

Global site tag (gtag.js) - Google Analytics