PL/SQL:使用pragma restrict_references限制包权限
在看别人的代码的时候。发现了例如以下的编译指令。
get_attribute_name是一个pl/sql function, 当我试图在这个函数中往一个log表里面插入log信息的时候。编译都通只是,给出例如以下信息,
看来就是上面这个pragma搞得鬼。
查了下Oracle 文档, (http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/restrictreferences_pragma.htm#LNPLS01339)
才知道这个pragma的作用是保证上面的那个function,不会改变数据库的状态 wnds (Write No Database State), 而我却在这个函数的内部进行了写表操作,难怪为编译出错。
RESTRICT_REFERENCES pragma的使用方法例如以下:
PRAGMA RESTRICT_REFERENCES ( subprogram_name, [RNDS, WNDS, RNPS, WNPS, TRUST])
keyword和參数描写叙述:
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代码。
须要注意的是, RESTRICT_REFERENCES pragma仅仅能出如今package specification 或者 object type specification.
以下是一个简单的样例:
CREATE PACKAGE loans AS
FUNCTION credit_ok RETURN BOOLEAN;
PRAGMA RESTRICT_REFERENCES (credit_ok, WNDS, RNPS);
END loans;
/
本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5333219.html,如需转载请自行联系原作者
PL/SQL:使用pragma restrict_references限制包权限相关推荐
- PL/SQL程序设计 第七章 包的创建和应用
§7.1 引言 包是一组相关过程.函数.变量.常量和游标等PL/SQL程序设计元素的组合,它具有面向对象程序设计语言的特点,是对这些PL/SQL 程序设计元素的封装.包类似于C++和JAVA语言中的 ...
- oracle 读取ldap数据库,Oracle PL/SQL管理LDAP服务器(DBMS_LDAP包的使用)
了解LDAP LDAP是Light Directory Access Protocol轻量级目录访问协议的简称,LDAP与数据库有很大的区别,它的数据是树状的,而且每个节点的属性也比较固定. LDAP ...
- [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)...
[强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天才在于积累!) --通过知识共享树立个人品牌. 继上七篇: [推荐]ORACLE P ...
- 第七章 控制PL/SQL错误
一.错误控制一览 在PL/SQL中,警告或错误被称为异常.异常可以是内部(运行时系统)定义的或是用户定义的.内部定义的案例包括除零操作和内存溢出等.一些常见的内部异常都有一个预定义的名字,如ZERO_ ...
- ORACLE PL/SQL编程
PL/SQL程序设计 什么是PL/SQL PL/SQL是 Procedure Language & Structured Query Language 的缩写.PL/SQL是对SQL语言存储过 ...
- 第十章 PL/SQL对象类型
第十章 PL/SQL对象类型 一.抽象的角色 抽象是对一个真实世界实体的高级描述或建模.它能排除掉无关的细节内容,使我们的日常生活更有条理.例如,驾驶一辆汽车时,我们是不需要知道它的发 动机是如何工作 ...
- 第十章 PL/SQL对象类型 ( 1 )
第十章 PL/SQL对象类型 一.抽象的角色 抽象是对一个真实世界实体的高级描述或建模.它能排除掉无关的细节内容,使我们的日常生活更有条理.例如,驾驶一辆汽车时,我们是不需要知道它的发动机是如何工作的 ...
- JAVA_WEB Oracle 10g学习: PL/SQL与Oracle间交互
一.抽象的角色 抽象是对一个真实世界实体的高级描述或建模.它能排除掉无关的细节内容,使我们的日常生活更有条理.例如,驾驶一辆汽车时,我们是不需要知道它的发动机是如何工作的.由变速排档.方向盘.加速器和 ...
- 第六章 PL/SQL与Oracle间交互
第六章 PL/SQL与Oracle间交互 一.PL/SQL支持的SQL一览 PL/SQL扩展了SQL,变得更加强大和易用.我们可以用PL/SQL灵活安全地操作Oracle数据,因为它支持所有的SQL数 ...
最新文章
- python实现gauss-seidel迭代公式_python实现高斯(Gauss)迭代法的例子
- Java 线程池(ThreadPoolExecutor)原理分析与使用
- USTC English Club Note20171023(2)
- java链表list_数据结构-List:使用Java实现双向链表LinkedList
- python替换excel指定字符串_【python】替换指定内容,excel数据预处理
- 英语语法---主语详解
- 机器学习导论�_机器学习导论
- Flutter之Decoration
- vue 跨域问题 - 总结篇
- linux mysql ssh通道_通过SSH通道来访问MySQL
- java中多线程重要吗_Java基础知识_多线程必要知识点
- 25. 单体内置对象
- 基于Linux的集群系统(三)
- sqlserver常用语法
- Geotools解析shp文件
- tune声场测试软件_(整理)SmaartLive实用声场测试软件的规范使用.
- android蜂巢效果、环形菜单、Kotlin影视应用、简约时钟、查看导出App、支付宝AR扫码效果等源码...
- 计算机系统概论(原书第2版)完整课后习题答案(一、二章)
- 服务器集群虚拟化区别,服务器集群与虚拟化
- 刘严涛一枚天蝎座的在读大学生