Oracle中的package到底能做什么,有什么好处 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 和JAVA中的PACKAGE以及C#中的命名空间一样的含义,便于管理和区分 -- 使用包的好处 -- 使用包来绑定函数和过程具有很多好处。首先,良好设计的包是对象(如函数、过程、全局变量和游标等)的逻辑分组。-- 当第一次调用包时,所有的代码(分析树和伪码)被加载到内存(Oracle服务器的共享全局区域[ SGA,Shared Global Area]-- 这意味着,第一次调用包的成本是非常高的(会涉及服务器的大量处理活动),但是随后调用的处理恨不能会比较高。-- 因此,在应用程序中使用包,能够比较经济地反复使用过程和函数。-- 使用包能够集成而向对象编程中所涉及的某些概念,尽管PL/SQL并不是“真正的”而向对象编程语言。借助于PL/SQL包,可以收集类似的函数过程,-- 并赋予公共的上下文。也能够实现对它们的封装。由于包的所有代码全部加载到内存中,也可以把类似的代码段放在一个包中,-- 以便多个过程和函数可以调用它们。如果处理逻辑涉及到密集的计算,并且希望把这些代码集成到一个地方,就可以使用包。-- 使用包可以增强安全性。当用户执行包中过程(或者存储过程和函数)时,会使用与拥有者相同的权限执行这个过程。在包中,-- 可以创建私有的函数过程,只能被相同包中其他函数和过程调用。这样可以实现信息隐藏。因此,包的结构支持自顶向下的设计模式。 包就相当于java的package,c++的namespace.......好处比他们更多,他们有的好处plsql包也有,比如:1.防止命名污染 名字完全一样的过程和函数,单独写,只能重写,不能并存,但是在包里就不一样了,每个不同的包可以有同名的过程或函数。2.功能统一 一系列类似的功能的过程或函数放一起,好处很明显,找也好找点3.允许重载 单独写名字相同就不允许了,但是放包里,只要参数列表不同,都可以,java什么的也有重载4.隐藏核心代码 就像oracle的包一样,包头给你看,包体你看不到5.最重要的就是断开依赖链 单独写的过程或函数,依赖链很紧密,比如里面引用的表修改了,那么这个函数过过程就失效,但是包可以跳过某些依赖链,这样可以减少重编译。还有些变量跟踪也有用,因为它会在session级维持变量偷过来送给你 我感觉很受用哦 怎么恢复被误删除的undo文件 数据库备分还原 oracle连接中文字符乱码的问题 跪求高手帮我优化sql语句 关于oracle数据库备份与还原问题,高手进! 关于powerdesign建oracle10g表的问题 ORACLE 语句实现计算列宽异常 紧急救助这个sql的写法,谢谢 请问访问其他用户的表时可以不加用户名前缀吗? 分析数据库容量占空比 存储过程执行太慢,求高手解答 decode不能用在plsql中?
-- 使用包来绑定函数和过程具有很多好处。首先,良好设计的包是对象(如函数、过程、全局变量和游标等)的逻辑分组。
-- 当第一次调用包时,所有的代码(分析树和伪码)被加载到内存(Oracle服务器的共享全局区域[ SGA,Shared Global Area]
-- 这意味着,第一次调用包的成本是非常高的(会涉及服务器的大量处理活动),但是随后调用的处理恨不能会比较高。
-- 因此,在应用程序中使用包,能够比较经济地反复使用过程和函数。-- 使用包能够集成而向对象编程中所涉及的某些概念,尽管PL/SQL并不是“真正的”而向对象编程语言。借助于PL/SQL包,可以收集类似的函数过程,
-- 并赋予公共的上下文。也能够实现对它们的封装。由于包的所有代码全部加载到内存中,也可以把类似的代码段放在一个包中,
-- 以便多个过程和函数可以调用它们。如果处理逻辑涉及到密集的计算,并且希望把这些代码集成到一个地方,就可以使用包。-- 使用包可以增强安全性。当用户执行包中过程(或者存储过程和函数)时,会使用与拥有者相同的权限执行这个过程。在包中,
-- 可以创建私有的函数过程,只能被相同包中其他函数和过程调用。这样可以实现信息隐藏。因此,包的结构支持自顶向下的设计模式。
好处比他们更多,他们有的好处plsql包也有,比如:
1.防止命名污染
名字完全一样的过程和函数,单独写,只能重写,不能并存,但是在包里就不一样了,每个不同的包可以有同名的过程或函数。2.功能统一
一系列类似的功能的过程或函数放一起,好处很明显,找也好找点3.允许重载
单独写名字相同就不允许了,但是放包里,只要参数列表不同,都可以,java什么的也有重载4.隐藏核心代码
就像oracle的包一样,包头给你看,包体你看不到5.最重要的就是断开依赖链
单独写的过程或函数,依赖链很紧密,比如里面引用的表修改了,那么这个函数过过程就失效,但是包可以跳过某些依赖链,这样可以减少重编译。还有些变量跟踪也有用,因为它会在session级维持变量
偷过来送给你 我感觉很受用哦