plsql guide(基础详解)(7)

2019-04-01 23:16

的过程,必须首先列出名称,接着是过程名称,如下:

execute Test_sales_information_pkg.init_item_price(p_warehouse_id?1 ); 包允许多个过程使用相同的变量和数据指针。包中的过程和函数,可为公共访问或为专用。

在创建包时,包的定义和包内容被分别地生成。从而,有两个命令create package和包内容的create package body命令。必须具备create procedure系统权限。 1.

建立包定义的语法:

create [or replace] package [user.]package {is |as} PL/SQL package specification; 包的内容由所有列在包定义中的公用对象的PL/SQL代码块及其定义组成。包的内容也可包括未列在包定义中的对象。 2.

包的初始化:

一个包中可以包括代码,在每次用户执行此包时最先被运行。 Create or replace package body test_sales_information_pkg As User_name varchar2(20); Entry_date date; … … begin select user, sysdate into user_name, entry_date from dual; end test_sales_information_pkg; 3.

包的编译和代码察看:

当对象在创建时,Oracle就编译它们,然而,当它们所引用的的数据库对象发生变化时,就有可能变为变为非法的操作。在这些对象下次执行时,它们被数据库重新编译。也可显示的重新编译这类对象,以提高数据库处理的性能,语法如下: alter package [user.]package_name compile [package| body];

可以通过查询下面的数据字典视图获得当前过程、函数、包和包的内容的源代码: USER_SOURCE ALL_SOURCE DBA_SOURCE

对于用户所有的过程对象

对于用户所有的或者被授权访问的规程对象

对于数据库中所有的过程对象

检索的列为TEXT并按照LINE(行号)顺序。

28

Company Confidential - For internal use only

触发器

触发器定义了当一些数据库相关事件发生时数据库应采取的动作。触发器可用于增加描述性的应用完整性,加强复杂业务的规则,或者监控数据的变动。

所需权限:

1.

所需系统特权:

为了在标上建立一个触发器,必须能够对标进行改动的,所以用户必须在表上具有ALTER权限,或者具有ALTER ANY TABLE系统权限。此外用户还需有CREATE TRIGGER系统特权,要在SCHEMA上创建触发器,必须具有CREATE ANY TRIGGER系统特权。

同时,要更改一个触发器,必须拥有触发器或者具有ALTER ANY TRIGGER系统特权。 2.

所需表权限:

除了激活触发器事件的表外,触发器还可以应用其他的表,故还必须拥有处理其他表的权限

触发器类型:

1. 行级别(Row_Level)触发器

对于处理中的每一行,行级触发器都执行一次。这是最常用的触发器类型,常用于数据监控和审计应用中,数据库快照(SNAPSHOT)就是使用了行级触发器。

2. 语句级别(Statment_Level)触发器

语句级触发器对于每个处理执行一次,他们常被用于对在某个表上执行的处理类型提供额外的安全手段。语句级触发器通过命令Create trigger建立缺省触发器类型。 3. Before和After触发器

由于触发器是由事件引发的,所以他们可以被设置成在这些事件之前或之后立即触发。在触发器中,用户可以引用此处理涉及到的旧值或新值。

4. Instead of触发器

可以使用Instead of触发器来告诉Oracle应执行什么操作。

29

Company Confidential - For internal use only

触发器语法:

Create [or replace] trigger [usr.]trigger {before | after | onstead of} delete | insert | update [ of culumn [,column]…]} [or {delete | insert | update [of column[,column]…]}]… on [usr,]{TABLE |VIEW } [[referencing {old as old | new as new} …] for each {row |statement } [when (condition)]] pl/sql_block 使用示例:

create trigger onhand_bef_upd_row befor update on t_onhand for each row

when(new.quantity/old.quantity>1.1) begin

insert into t_onhand_audit

values(:old.warehouse_id, :old.item_id, :old.quantity, :old.rec_date);

end;

注意:当引用PL/SQL代码块中的关键字NEW和OLD时,必须以冒号(:)开头。在触发器中,也可使用用户自定义的例外处理。

其他操作:

激活和取消触发器:

alter trigger onhand_bef_upd_row enable(/disable); 或是:

alter table t_onhand enable(/disable) all trigger; 删除触发器:

drop tirgger onhand_bef_upd_row。 PL/SQL环境

PL/SQL是一项绑定在Oracle 数据库服务器上的技术,通过PL/SQL引擎进行传输和处理。

当一段PL/SQL块从Pro* 程序、user-exit、SQL*Plus 或是Server Manager中提交后,Oracle数据库服务器上的PL/SQL引擎就开始处理他们。PL/SQL引擎首

30

Company Confidential - For internal use only

先把块中的PL/SQL代码分成独立的若干块,在把他们传送到SQL语句执行器。这也意味着尽量采用少的PL/SQL块传输到Oracle数据库服务器,从而提高客户-服务器网络构造工作的高效性。

在许多Oracle工具中,包括 Developer/2000,拥有他们自己的PL/SQL引擎,这是完全独立Oracle数据库服务器,且在之前的引擎。 Oracle Procedure Builder的使用

结构化程序设计的最大有点在于能快速、简单的创建和调试代码,Procedure Builder 提供所有必要的功能,以利于成功开发和调试PL/SQL程序。 组要构件: 组件 对象浏览器 PL/SQL解释执行器 说明 管理PL/SQL结构,执行调试 调试PL/SQL代码,执行PL/SQL代码 创建和编辑PL/SQL代码 创建和编辑服务器端PL/SQL代码 创建和编辑数据库触发器 程序编辑器 数据库程序编辑器 数据库触发器编辑器 对象浏览器:

Program Unit: 能独立被PL/SQL编译器识别和处理的PL/SQL结构; Program Unit – Sepcification: 程序单元的名称、参数和返回类型; Program Unit – Referances: 程序单元引用的过程、函数、匿名块和表; Program Unit – Referanced By: 引用程序单元的过程、函数、匿名块和表; Libraries: 文件或数据库中PL/SQL包、过程和函数的集合; Attached Libraries: 引用的数据库或文件系统中的库; Built-in Packages : 在程序调试中可引用的PL/SQL结构单元; Debug Actions: 在程序单元调试中,可进行的监测、中断的命令; Stack: 子程序调用堆栈

Database Objects: 服务器端存储的过程、库、表和视图。 PL/SQL解释执行器:

通过使用PL/SQL解释执行器,可以定义、显示、调试和运行PL/SQL程序,同Procedure_name [(argument1 [, argument2, ….])]; 时,在PL/SQL解释执行器中,可以直接运行过程,以分号结束,如下:

31

Company Confidential - For internal use only

在PL/SQL解释执行器中,也可执行SQL DDL语句和其他命令语句。

程序编辑器:

1.

创建一个新程序单元: i. ii. iii.

选中程序单元;

点击创建按钮,弹出程序对话框窗口;

出入新建程序单元名称,并选择程序类型,点击OK键;新建程序单元显示在对象浏览器上; 在打开的程序单元内,编辑。

iv. 2.

程序编译

点击程序编辑窗口中的compile按钮,编译程序单元,编译信息在程序编辑器下方显示,包括各种出错信息或编译成功信息。

调试数据库程序:

1.

总体步骤:

i. 把数据库程序单元载入到对象浏览器中; ii. iii. iv. v.

选中要调试的程序单元; 用鼠标将其拖到程序单元中; 进行调试工作;

用鼠标间调试好程序单元拖回到原数据库单元中。

调试方法:

在PL/SQL解释执行器中调试程序,可以双击代码行,设置断点(可以设置多割断点);同时,还可以设置局部变量和参数,如下: (debug1)PL/SQL> debug.seti(?I‘,3)

程序中的参数和变量类型

参数:

参数有如下三种类型: IN Argument OUT Argument IN OUT Argument

在参数格式中,IN 可以省略,它也是缺省的形式;IN 代表该参数用于向程序中传递值,OUT代表由程序单元返回给调用它的函数值,而对于 IN

32

Company Confidential - For internal use only


plsql guide(基础详解)(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小区高清数字监控系统技术方案书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: