`
regedit_123
  • 浏览: 317956 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

oracle之nocopy关键词

阅读更多
If the subprogram exits early with an exception, the values of OUT and IN OUT parameters (or object attributes) might still change. To use this technique, ensure that the subprogram handles all exceptions.

CREATE OR REPLACE PROCEDURE SP_TEST (P_OUT OUT NOCOPY NUMBER)
AS
BEGIN
   P_OUT :=1;
   RAISE_APPLICATION_ERROR(-20001,'ERROR');
   P_OUT :=2;
   RETURN;
END;
/


DECLARE
   V_OUT NUMBER :=0;
BEGIN
   DBMS_OUTPUT.PUT_LINE('BEFORE CALLING SP_TEST: V_OUT = '||V_OUT);
   SP_TEST(V_OUT);
EXCEPTION
   WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('AFTER CALLING SP_TEST: V_OUT = '||V_OUT);
END;
/
使用了nocopy之后,如果在被调用过程中没有很好的异常处理机制,会导致out参数返回的值产生不确定性,反而会影响程序结果的正确性。所以有些场景还是不使用nocopy为好。



输出:
BEFORE CALLING SP_TEST: V_OUT = 0
AFTER CALLING SP_TEST: V_OUT = 1

去掉NOCOPY的输出:
BEFORE CALLING SP_TEST: V_OUT = 0
AFTER CALLING SP_TEST: V_OUT = 0

分享到:
评论

相关推荐

    Oracle 子程序参数模式,IN,OUT,NOCOPY

    Oracle 子程序参数模式主要有IN,OUT,NOCOPY,IN和OUT可以组合,OUT和NOCOPY也可以组合使用.

    Oracle P/L SQL实现FTP上传、下载功能

    Oracle P/L SQL实现FTP上传、下载功能,以下是此过程包的头部,包体经常打包处理plb,感兴趣用户可以下载下来。 --Oracle上的FTP功能 Create or Replace Package UTL_FTP AUTHID CURRENT_USER as Type Connection ...

    Oracle_plsql基本语法笔记.txt

    Oracle 常用命令举例 标题 基本语法 %type用法,%rowtype用法,TYPE用法 游标的使用 for 循环 loop循环 while循环 if / else 的用法 case 的用法 标题 错误定义 error的设定 exception用法 ...

    Oracle P/L SQL实现发送Email、浏览网页等网络操作功能

    Oracle P/L SQL实现发送Email、浏览网页等网络操作功能 Oracle P/L SQL实现发送Email、浏览网页等网络操作功能,以下是此过程包的头部,包体经常打包处理plb,感兴趣用户可以下载下来。 --.使用聚合函数实现 多行...

    网页防复制

    在html中加入<script type="text/javascript" src="nocopy.js">就可以防复制

    STC-ISP 烧录软件

    应用于单片机程序烧录,简单方便,且实用;尤其对于学生学习单片机,教师授课,学习ARM有很大的用处

    Golang中禁止拷贝的实现代码

    Go中没有原生的禁止拷贝的方式,所以如果有的结构体,你希望使用者无法拷贝,只能指针传递保证全局唯一的话,可以这么干,定义 一个结构体叫 noCopy,要实现 sync.Locker 这个接口 方法如下: // noCopy may be ...

    Linux uucp命令用法详解

    -c或–nocopy 不用将文件复制到缓冲区。 -C或–copy 将文件复制到缓冲区。 -d或–directiories 在传送文件时,自动在[目的]建立必要的目录。 -f或–nodirectiories 在传送文件时,若需要在[目的]建立目录,则放弃...

    Linux uux命令用法详解

    Linux uux命令 Linux uux命令用于在远端的UUCP主机上执行指令。 uux可在远端的UUCP主机上执行指令或是执行本机上的...-c或–nocopy 不用将文件复制到缓冲区。 -C或–copy 将文件复制到缓冲区。 -g或–grade 指定文件

    node-squad:并行运行 N 个函数,等待所有函数完成后再开始下一个批处理

    节点小队 并行运行 N 个函数。... config.noCopy :默认情况下,node-squad 使用作为参数传递的数组副本。 将此设置为 true 以使用原始数组而不是副本。 config.stopOnReject :当承诺被工作拒绝时是否停止小队(默

    blitz:适用于Mac的Docker的零依赖源代码同步器-docker source code

    闪电战 Blitz是闪电的德语单词,也是零依赖... 确保使用nocopy选项来防止将现有文件从映像复制到卷。 否则,您将面临出现同步冲突或文件丢失的风险。 将另一个将保持同步状态的卷添加到/unison_data 闪电战支持两种模

Global site tag (gtag.js) - Google Analytics