`
hwpok
  • 浏览: 252023 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ORACLE NOCOPY

阅读更多
    PL/SQL中对out,in out参数使用的?默认形参会复制一份实参的副本,然后在内部传递,修改等,发生异常,不会赋值给实参,控制权交还调用环境,而实参值不变,还是调用前的值。而使用了NOCOPY后,形参将获得一个指向实参的指针,然后在内部传递,赋值都直接修改实参了,此时如果异常发生,控制权交还调用环境,但是实参已经被修改了。无法还原成调用前的值。
    对参数I N使用NOCOPY将会产生编译错误,这是因为参数I N总是按引用传递.
    NOCOPY的主要优点是可以提高程序的效率。当我们传递大型PL/SQL表时,其优越性特别显著.使用NOCOPY的限制在某些情况下,NOCOPY将被编译器忽略,这时的参数仍将按值传递。这时,编译器不会报告编译错误。由于NOCOPY是一个提示项(Hint),编译器可以决定是否执行该项。在下列情况下,编译器将忽略NOCOPY项:
1.实参是索引表(index-by table)的成员时。如果该实参是全表,则该限制不起作用。
2.实参被强制指定精度,比例或NOT NULL时。该限制将不适用按最大长度强制的字符串参数。
3.实参和形参都是记录类型,二者是以隐含方式或使用了%ROWTYPE类型声明时,作用在对应字段的强制说明不一致。
4.传递实参需要隐式类型转换时。
5.子程序涉及到远程过程调用(PRC)。远程过程调用就是跨越数据库对远程服务器的过程调用。
分享到:
评论

相关推荐

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

    总结起来,Oracle 子程序参数模式IN、OUT和NOCOPY提供了灵活的数据传递机制,IN用于单向传递数据,OUT用于传出结果,而NOCOPY则是在OUT基础上尝试优化性能的一种方式,允许子程序直接修改调用者的变量。了解和正确...

    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 创建wm_concat函数

    ### Oracle 创建wm_concat函数 #### 知识点一:Oracle 10G及以下版本的wm_concat函数自定义实现 在Oracle 10G及更早版本中,并没有内置的`wm_concat`函数,该函数主要用于对一组字符串进行连接操作。为了在这些...

    Oracle sdo_geometry空间坐标系转换

    geometry IN OUT NOCOPY MDSYS.SDO_GEOMETRY, from_srs_id IN NUMBER, to_srs_id IN NUMBER ) ``` - `geometry`: 需要转换的几何对象。 - `from_srs_id`: 当前几何对象所在的坐标系统ID。 - `to_srs_id`: 目标...

    从Oracle的FORM中调用REPORT.rar

    parameter_list IN OUT NOCOPY PARAM_LIST, return_code OUT NUMBER, return_message OUT VARCHAR2); ``` 其中,`report_name`是报表的名称,`parameter_list`用于传递报表所需的参数,`return_code`和`...

    Oracle_plsql基本语法笔记.txt

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

    Oracle PLSQL编程最佳实践中文版

    ### Oracle PL/SQL编程最佳实践知识点汇总 #### 概述 - **目标**: 提供一套完整的Oracle PL/SQL编程指导原则。 - **适用对象**: 面向所有使用Oracle数据库进行开发的技术人员。 #### 规范 - **命名规则**: - ...

    Oracle.PL.SQL程序设计 下册

    - 在PL/SQL中,变量需要先声明后使用,可以使用`:=`进行赋值,也可以通过`IN OUT`或`IN OUT NOCOPY`参数传递变量。 4. **流程控制** - 控制流程的结构包括IF-THEN-ELSIF-ELSE、CASE、FOR循环、WHILE循环、GOTO和 ...

    oracle存储过程学习经典[语法+实例+调用]

    - `NOCOPY`:当参数类型为`INOUT`时,使用`NOCOPY`关键字可避免复制参数的值,从而节省内存资源。 - **权限管理**: - `AUTHID CURRENT_USER`:表示存储过程内的操作权限与当前执行用户相同。 - `AUTHID DEFINER...

    Oracle 20071025_PLSQLTuning.pdf

    根据提供的文件信息,我们可以深入探讨Oracle PL/SQL性能调优中的关键知识点,这些知识点主要集中在“编码实践”和“系统配置”两个方面。 ### 一、编码实践 #### 数值数据类型的选择 在PL/SQL中,数值数据类型的...

    Oracle Stream + AQ + JMS 搭建步骤

    ### Oracle Stream + AQ + JMS 搭建详解 #### 一、背景及目标 在当前数据密集型应用环境中,数据库变更数据的实时捕获与处理变得尤为重要。Oracle Stream技术结合Oracle的高级队列(Advanced Queuing, AQ)以及...

    Oracle 中PLSQL应用优化.pdf

    Oracle中的PL/SQL应用优化是数据库管理中一个关键的话题,主要关注如何提高代码执行效率和减少资源消耗。本文档详细探讨了多个与PL/SQL优化相关的主题,包括数据类型的选取、语句建议、批量处理、新SQL语句的使用...

    Oracle_PLSQL_存储过程

    - **NOCOPY:** 标志,表明参数不应被复制。 - **AUTHID:** 定义执行权限类型。 **示例:** ```sql CREATE OR REPLACE PROCEDURE sam.credit ( acc_no IN NUMBER, amount IN NUMBER ) AS BEGIN UPDATE ...

    ORACLE_PLSQL性能调优

    我们可以发现合理选择数据类型、有效利用变量声明和NOT NULL约束、恰当使用NOCOPY选项、灵活运用动态SQL、批量处理、表函数和管道表函数等技术手段,都是提升Oracle数据库应用性能的重要途径。希望本文能为正在从事...

    oracle命令集合

    - `CREATE OR REPLACE PROCEDURE procedure_name (param1 IN/OUT/NOCOPY datatype, ...) AS ... BEGIN ... END;` 六、备份与恢复 1. 数据泵导出(EXPDP): - `expdp username/password directory=dir_name dump...

    Oracle PLSQL调优

    ### Oracle PL/SQL调优知识点详解 #### 一、序言 在开始深入探讨Oracle PL/SQL调优之前,我们先来简要回顾一下讲座的背景与环境设置。本讲座面向具备一定PL/SQL基础知识的听众,主要内容涵盖编程技巧与系统配置两大...

    oracle数据库中查看系统存储过程的方法

    在Oracle数据库中,存储过程是预编译的SQL语句集合,它们被组织在一起作为一个可重用的单元,便于管理和执行。查看系统存储过程是数据库管理员和开发人员日常任务的一部分,这有助于理解数据库的运作机制,排查问题...

    Oracle_plsql讲义:第22章 创建子程序和包.ppt

    Oracle PL/SQL 子程序和包的概念和应用 本章要点: * 理解子程序(过程、函数)及包的概念 * 掌握如何创建、执行和删除过程、函数及包的方法 * 了解形参和实参的区别以及不同参数模式的特征 * 灵活使用过程、函数...

    基于Oracle的高性能动态SQL程序开发

    3. **使用NOCOPY编译器选项**:对于大型对象或集合类型的参数,使用`NOCOPY`可以减少参数传递时的开销,通过引用传递而不是值传递来提高性能。 在实际开发中,理解这些原则和技巧对于编写高效、灵活的Oracle动态SQL...

Global site tag (gtag.js) - Google Analytics