pragma restrict_references

今天在研究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 is
v_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就是一个约束函数对于表、变量权限的限制。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值