第8章Oracle的其它对象
8.1 序列
8.2 同义词
8.3 存储过程
8.4 触发器
8.5 函数
8.6 包
8.1 序列
8.1.1 在OMEC中创建序列8.1.2 使用SQL命令创建序列8.1.3 维护序列
8.1.1 在OMEC中创建序列
在数据表中,主关键字有时会很复杂,可能是几个列的组合。如果没有序号,就需要将几个列定义成主关键字。序号实际上是加在表中的一个附加选项,该列的值是一些顺序号,即序列。Oracle 9i专门提供了序列对象,直接利用系统产生序列值。
在OMEC中,选中“序列”文件夹,单击右键,从弹出的快捷菜单中选择“创建”,激活“创建序列”向导,按其向导提示即可完成序列的创建。
8.1.2 使用SQL命令创建序列
CREATE SEQUENCE sequence_name [INCREMENT BY n]
[START WITH n]
[MAXV ALUE n | NOMAXV ALUE] [MINV ALUE n |NOMINV ALUE] [CYCLE | NOCYCLE]
[CACHE n | NOCACHE]
[ORDER | NOORDER]
8.1.2 使用SQL命令创建序列
参数说明
其中sequence_name表示创建的序列名称,n表示任意正整数值。
INCREMENT BY:指定序列递增或递减的间隔数值,缺省值为1。
START WITH:序列的起始值。
MINV ALUE:序列可允许的最小值。若指定为NOMINV ALUE,则对升序序列将使用默认值1,而对降序序列使用默认值-1.0E28。
8.1.2 使用SQL命令创建序列
参数说明
MAXV ALUE:序列可允许的最大值。对降序序列,将使用该序列默认的最大值.若指定为
NOMAXV ALUE,则将对升序序列使用默认值-
1.0E28(-10的28次方).而对降序序列使用默认值-1。CYCLE:指定在达到序列最小值或最大值之后,序列应继续生成值。若指定为NOCYCLE,则序列将在达到最小值或最大值后停止生成任何值。缺省值是NOCYCLE。
8.1.2使用SQL命令创建序列
CACHE:由数据库预分配并存储序列值的
数目。默认值为20。若指定为NOCACHE,则不预分配序列值的数目。
ORDER:缺省值为NOORDER。指定
ORDER参数使Oracle 9i 在并行环境下,按
照请求的顺序来产生序列号。
8.1.3 维护序列
1. 查询序列信息
序列的信息可以在ALL_SEQUENCE和
USER_SEQUENCE
数据字典中找到,其中USER_SEQUENCE的数据结构如下表所示。
8.1.3 维护序列
列名具体含义
SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY CYCLE_FLAG ORDER_FLAG CACHE_SIZE LAST_NUMBER 序列名
最小值
最大值
增量
循环标志次序标志缓冲大小最后一个数
8.1.3 维护序列
2.修改序列
当修改序列时,注意不要使依赖于序列号的主键不唯一。
利用OEMC修改序列在OEMC的界面中,选择要修改的序列,单击鼠标右键,从弹出的快捷菜单中选择“查看/编辑详细资料”,激活“编辑序列”窗口,在窗口中对序列进行修改即可。
8.1.3 维护序列利用SQL命令修改序列
ALTER SEQUENCE sequence_name [INCREMENT BY n]
[START WITH n]
[MAXV ALUE n | NOMAXV ALUE] [MINV ALUE n | NOMINV ALUE] [CYCLE | NOCYCLE]
[CACHE n | NOCACHE] [ORDER | NOORDER]
8.1.3 维护序列
3.删除序列
在OEMC的界面中,选择要删除的序列,
单击鼠标右键,从弹出的快捷菜单中
选择“移去”即可。
用SQL语句删除一个序列和删除别的对象类似。
其语法形式是DROP SEQUENCE sequence_name
8.2.1 在
OEMC中创建同义词
8.2.2 使用SQL命令创建同义词
8.2 同义词
8.2.1 在OEMC中创建同义词
1.同义词的概念
同义词是表、视图、序列、过程、函数和包的别名。当应用程序或用户使用同义词操作模式对象时,Oracle将自动查找与同义词对应的对象。由于同义词只是其他模式对象的一个别名,所以它与视图一样,在数据库中只存储其定义文本,而不占用其他额外的存储空间。我们可以为本地数据库对象创建同义词,在为远程数据库创建了数据库链接之后,还可以为远程数据库创建同义词。所以,为了给不同的用户使用数据库对象时提供一个简单的、唯一标识数据库对象的名称,可以为数据库对象创建同义词。
8.2.1 在OEMC中创建同义词
2. 同义词的分类及其优点
同义词分为公用同义词和私有同义词两类,公用同义词的所有者为PUBLIC,所以数据库的每个用户均可引用它。而私有同义词为创建它的用户所拥有,只有该用户才能控制它的访问权限。
使用同义词的最大好处是安全、方便。因为使用同义词时,用户不必指出实际访问对象所属模式及名称,所以它简化了用户的访问操作。此外,应用程序使用同义词访问模式对象时,由于它屏蔽了对象的实际名称和所属模式,这在某种程度上对数据库有一定的安全保护作用。
8.2.1 在OEMC中创建同义词
3. 创建同义词
在OEMC树型视图中,选择方案的同义词文件夹,单击鼠标右键,从快捷菜单中选择“创建”项。打开创建同义词窗口即可完成同义词的创建。
4. 使用同义词
一旦创建了同义词,数据库中的用户就可以直接通过同义词名称访问该同义词所指的数据库对象,而不需特别指出该对象的所属关系。
8.2.2 使用SQL命令创建同义词
1.创建同义词
CREATE [PUBLIC] SYNONYM synonym_name
FOR table [@database_link]
在操作过程中,不能修改或改变同义词,而只能删除。2.删除同义词
DROP [PUBLIC] SYNONYM synonym_name
8.3 存储过程
8.3.1 在OEMC中创建存储过程8.3.2 使用SQL命令创建存储过程
8.3.1 在OEMC中创建存储过程
在OEMC树状视图中,选择源类型文件夹下的“过程”图标,单击鼠标右键,在弹出的快捷菜单中选择“创建”选项,打开创建存储过程窗口。
这个窗口是全屏幕的编辑环境,而且用不同的颜色标识出命令、参数和注释。
存储过程创建完成后,可以单击“显示SQL”按钮,则可看到存储过程的全部代码。从中可以看到,在程序的前面,系统自动生成了创建存储过程的CREATE语句。
8.3.2 使用SQL命令创建存储过程
存储程序是在数据库内部创建并存储编译过的子程序。这样的子程序可以在不同的用户和应用程序之间共享,并可实现程序的优化和重用。
1.命令格式
CREATE [OR REPLACE] PROCEDURE
procedure_name
[(parameter, parameter_mode, data_type, … n)]
AS
BEGIN
sql_statement
END procedure_name