pragma restrict_references

来源:互联网 发布:易语言3d游戏源码 编辑:程序博客网 时间:2024/06/05 04:53
今天在研究xlsx_builder_pkg包的时候,看到了hextoraw函数,进而发现了utl_raw包。在包头中看到了这样一种语句:
 pragma RESTRICT_REFERENCES(copies, WNDS, RNDS, WNPS, RNPS);

简单搜索了一下,是这样一种用法:
PRAGMA RESTRICT_REFERENCES ( subprogram_name, [RNDS, WNDS, RNPS, WNPS, TRUST])

关键字和参数描述:

PRAGMA: 表示这是一个编译指令,在编译的时候执行

subprogram_name: PL/SQL 函数的名字

RNDS: (Read No Database State) 表示该subprogram不会查询(query)数据库中的表。

WNDS: (Write No Database State) 表示该subprogram不会改变数据库中的表的数据。

RNPS: (Read No Package State) 不访问包中的变量

WNPS:(Write No Package State) 不改变包中的变量值

TRUST: 表示信任该subprogram不会违反前面的任何约束,一般用在PL/SQL调用外部函数,比如java代码。

create or replace package pkg_zy_Test is  function func_test_res(para number) return number;  pragma restrict_references(func_test_res,rnps);end pkg_zy_Test;/create or replace package body pkg_zy_Test isv_value number:=0; function func_test_res(para number) return number is   v_value0 number; begin   v_value0:=v_value; end;begin  null;end pkg_zy_Test;/

编译报错:
Compilation errors for PACKAGE BODY IRMDEV2.PKG_ZY_TEST

Error: PLS-00452: Subprogram ‘FUNC_TEST_RES’ violates its associated pragma

个人总结来说,pragma restrict_references就是一个约束函数对于表、变量权限的限制。

0 0
原创粉丝点击