oracle优化函数definer,Oracle_plsql讲义:第23章 使用子程序和包

《Oracle_plsql讲义:第23章 使用子程序和包》由会员分享,可在线阅读,更多相关《Oracle_plsql讲义:第23章 使用子程序和包(30页珍藏版)》请在人人文库网上搜索。

1、Oracle SQL CREATE OR REPLACE PROCEDURE procedure_name parameter_list AUTHID CURRENT_USER | DEFINER IS | AS function_body; CREATE OR REPLACE PACKAGE package_spec_name AUTHID CURRENT_USER | DEFINER IS | AS package_spec; CREATE OR REPLACE TYPE type_name AUTHID CURRENT_USER | DEFINER IS | AS OBJECT type。

2、_spec,在SQL语句中使用存储函数,PL/SQL 2.1版(Oracle 7的7.1版)及更高版本从SQL语句中调用子程序 根据用户定义函数的使用场合以及运行的数据库版本,函数必须满足不同限制。 函数的使用受纯度等级限制。纯度等级定义了函数读取或修改哪种数据结构,纯度等级,纯度等级,根据函数纯度等级,它调用将受到如下限制: 任何从SQL语句调用的函数不能修改任何数据库表(WNDS)。 为了实现远程运行(通过数据库连接)或并行运行,函数不能读取或写入包变量的值(RNPS和WNPS) 从SELECT,VALUES,或SET子句调用的函数可以写入包变量。所有其他子句中的函数都必须具有WNPS纯度。

3、等级。 函数仅仅与它所调用的子程序具有同样的纯度等级。 不管存储PL/SQL函数具有何种纯度等级,都不能从CREATE TABLE或ALTER TABLE命令的CHECK约束子句中调用该存储PL/SQL函数。也不能使用该存储PL/SQL函数来为一个列指定缺省值,用户函数从SQL语句中调用满足的要求,函数必须要存储在数据库中,其形式可以是独立的函数,或作为包的一部分。不能是局部的 函数只能使用IN参数,不能使用IN OUT 或OUT 形参只能使用数据库类型,而不能使用诸如BOOLEAN或RECORD之类的PL/SQL类型。 函数的返回类型也必须是数据库类型 函数不能使用COMMIT或ROLLBA。

4、CK约束当前事务,也不能回滚到函数运行前的断点。 函数也不能发出任何ALTER SESSION或ALTER SYSTEM命令,默认参数,从过程化语句中调用一个函数时,如果该函数有形参的话,可以使用其缺省值。然而,如果从SQL语句调用函数时,必须指定所有参数。 必须使用定位符(Positinal Notation),而不能使用命名符(Name Notation,在Oracle8i中从SQL语句调用函数,Oracle8i提供了TRUST关键字,用来代替或补充纯度等级参数。若使用了它,那么在编译标识中列出的限制就不会强制执行。 从Oracle8i起,从DML语句中调用的函数既不可以从正在被该DML语。

5、句修改的数据库表读取数据,也不能对其进行修改,但该函数可以更新其他表,包的辅助功能,共享池锁定 包体长度的限制 优化参数,共享池锁定,DBMS_SHARED_POOL包允许程序员把一个对象锁定在共享池中。 当该对象被锁定后,除非由程序申请对其清除,否则无论共享池有多满,也不管是否有程序访问该对象,该对象将常驻在共享池中。 这种处理方法有利于提高程序的运行效率,因为从系统的磁盘重新装入对象要进行大量读写操作。锁定对象还有助于最大限度地减少共享池的碎片,共享池锁定,DBMS_SHARED_POOL.KEEP过程:用来在共享池中锁定对象。包、触发器、序列等可被锁定,独立过程和函数不能所定 DBMS_。

6、SHARED_POOL.UNKEEP过程 DBMS_SHARED_POOL.SIZES过程:它把共享池的内容输出到屏幕 DBMS_SHARED_POOL.ABORTED_REQUEST_THRESHOLD过程:停止释放对象,包体长度的限制,编译器对包体长度的限制如下 : Diana树中的节点数。在Oracle8i之前的版本中,Diana节点的最大数目是32K,Oracle8i以上版本将包体和类型体的限制扩充到了64兆字节的容量。 编译器生成的临时中间变量的容量最多21K字节。 入口点的数量。一个包体最多可以有32K个入口点,入口点可以是过程或函数。 字符串的数量。PL/SQL对字符串的限制单位。

7、是232,优化参数,使用DETERMINISTIC和PARALLEL_ENABLE关键字,PL/SQL编译优化器将会对调用PL/SQL函数进行优化。 该关键字要放在函数的返回类型和IS或AS子句之间,CREATE OR REPLACE FUNCTION function_name parameter_list RETURN return_type DETERMINISTIC PARALLEL_ENABLE IS|AS function_body,本章小结,通过访问各种数据库字典视图来查询子程序的信息。user_objects视图包含了当前用户拥有的所有对象的信息。user_source视图包含。

8、对象的源程序代码。user_errors视图则包含编译错误的信息。 预先声明可以解决函数之间相互调用的问题。 子程序引用其他数据库对象时,该子程序依赖于那个对象。如果修改了被引用对象,那么依赖对象的状态将更改为无效,指出需要重新编译。 在PL/SQL中使用的函数可以使用额外的限制,这被称为纯度等级。 共享池是在子程序运行时包含已编译子程序伪代码及其他代码的SGA的一部分。KEEP过程用来在共享池中锁定对象。UNKEEP过程实现从共享池中删除锁定对象。SIZES过程用来把共享池的内容输出到屏幕。 PL/SQL编译优化器使用DETERMINISTIC和PARALLEL_ENABLE关键字对调用PL/SQL函数进行优化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值