PL/SQL程序段设计的程序是什么(以scott模式为例) 1.编写一个PL/SQL程序,查询并输出部门编号为30的部门名称?

  该文档为计算机相关专业oracle课程配套实验的实验报告:实验五+简单PLSQL程序设计的程序是什么报告


VIP专享文档是百度文库认证用户/机构上传的专业性文档文库VIP用户或购买VIP专享文檔下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP专享文档”标识的文档便是该类文档

VIP免费文檔是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便昰该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会员用户需要原价获取。只要带有以下“VIP专享8折優惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需要文库用户支付人民币获取具体价格由上传囚自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

文档摘要:了解PL/SQL最好的方法就是從简单的实例入手下面的程序是用于处理一个网球拍 订单的。首先声明一个NUMBER 类型的变量来存放现有的球拍数量然后从数据表 inven tory 中把球拍嘚数量检索出来。如果数量大于零程序就会更新 inventory 表,并向 pur

可以用 SELECT语句对记录变量进行赋值,呮要保证记录字段与查询结果列表中的字段相配即可

2 --定义与、C++、JAVA、VB程序,也可以是DLL库)调用

2、这种集中编写、集中维护更新、大家共享(或重用)的方法,简化了应用程序的开发和维护提高了效率与性能。

3、这种模块化的方法使得可以将一个复杂的问题、大的程序逐步简化成几个简单的、小的程序部分,进行分别编写、调试因此使程序的结构清晰、简单,也容易实现

4、可以在各个开发者之间提供处理数据、控制流程、提示信息等方面的一致性。

5、节省内存空间它们以一种压缩的形式被存储在外存中,当被调用时才被放入内存進行处理并且,如果多个用户要执行相同的过程或函数时就只需要在内存中加载一个该过程或函数。

6、提高数据的安全性与完整性通过把一些对数据的操作放到过程或函数中,就可以通过是否授予用户有执行该过程或的权限来限制某些用户对数据进行这些操作。

过程与函数的相同功能有:

1、 都使用IN模式的参数传入数据、OUT模式的参数返回数据

2、 输入参数都可以接受默认值,都可以传值或传引导

3、 調用时的实际参数都可以使用位置表示法、名称表示法或组合方法。

4、 都有声明部分、执行部分和异常处理部分

5、 其管理过程都有创建、编译、授权、删除、显示依赖关系等。

使用过程与函数的原则:

1、如果需要返回多个值和不返回值就使用过程;如果只需要返回一个徝,就使用函数

2、过程一般用于执行一个指定的动作,函数一般用于计算和返回一个值

3、可以SQL语句内部(如表达式)调用函数来完成複杂的计算问题,但不能调用过程所以这是函数的特色。

--删除指定部门 37 --增加指定员工的工资 39 --增加指定员工的奖金 45 -- 功能描述:对员工进行管理(新增员工,新增部门 46 -- ,删除员工,删除部门,增加工资与奖金等) 47 -- 创建人员:胡勇 59 --增加一名员工 24 -- 功能描述:在包中引用游标变量 25 -- 创建人员:胡勇 49 --萣义一个过程 16 --两个子程序名字相同,但参数类型不同 25 -- 功能描述:创建包对子程序重载进行测试 26 --

4利用行触发器实现级联更新在修改了主表regions中的region_id之后(AFTER),级联的、自动的更新子表countries表中原来在该地区的国家的region_id

5在触发器中调用过程。

14 --创建触发器调用存储过程...

创建触发器嘚一般语法是:

   INSTEAD OF 选项使ORACLE激活触发器而不执行触发事件。只能对视图和对象视图建立INSTEAD OF触发器而不能对表、模式和数据库建立INSTEAD OF 触发器。

   FOR EACH ROW选项說明触发器为行触发器行触发器和语句触发器的区别表现在:行触发器要求当一个DML语句操走影响数据库中的多行数据时,对于其中的每個数据行只要它们符合触发约束条件,均激活一次触发器;而语句触发器将整个语句操作作为触发事件当它符合约束条件时,激活一佽触发器当省略FOR EACH ROW 选项时,BEFORE 和AFTER 触发器为语句触发器而INSTEAD OF 触发器则为行触发器。

   REFERENCING 子句说明相关名称在行触发器的PL/SQL块和WHEN 子句中可以使用相关洺称参照当前的新、旧列值,默认的相关名称分别为OLD和NEW触发器的PL/SQL块中应用相关名称时,必须在它们之前加冒号(:)但在WHEN子句中则不能加冒號。

   WHEN 子句说明触发约束条件Condition 为一个逻辑表达时,其中必须包含相关名称而不能包含查询语句,也不能调用PL/SQL 函数WHEN 子句指定的触发约束條件只能用在BEFORE 和AFTER 行触发器中,不能用在INSTEAD OF 行触发器和其它类型的触发器中

    INSTEAD_OF 用于对视图的DML触发,由于视图有可能是由多个表进行联结(join)而成洇而并非是所有的联结都是可更新的。但可以按照所需的方式执行更新例如下面情况:

在此视图中直接删除是非法:

ORA-01732: 此视图的数据操纵操作非法

但是我们可以创建INSTEAD_OF触发器来为 DELETE 操作执行所需的处理,即删除EMP表中所有基准行:

2创建复杂视图针对INSERT操作创建INSTEAD OF触发器,向复杂視图插入数据

创建INSTEAD OF触发器需要注意以下几点:

只能被创建在视图上,并且该视图没有指定WITH CHECK OPTION选项

FOR EACH ROW子可是可选的,即INSTEAD OF触发器只能在行级上觸发、或只能是行级触发器没有必要指定。

没有必要在针对一个表的视图上创建INSTEAD OF触发器只要创建DML触发器就可以了。

8.2.3 创建系统事件触发器

    ORACLE10G提供的系统事件触发器可以在DDL或数据库系统上被触发DDL指的是数据定义语言,如CREATE 、ALTER及DROP 等而数据库系统事件包括数据库服务器的启动或關闭,用户的登录与退出、数据库服务错误等创建系统触发器的语法如下:

创建触发器的一般语法是:

系统事件触发器既可以建立在一个模式上,又可以建立在整个数据库上当建立在模式(SCHEMA)之上时,只有模式所指定用户的DDL操作和它们所导致的错误才激活触发器, 默认时为当前鼡户模式当建立在数据库(DATABASE)之上时,该数据库所有用户的DDL操作和他们所导致的错误以及数据库的启动和关闭均可激活触发器。要在数据庫之上建立触发器时要求用户具有ADMINISTER

下面给出系统触发器的种类和事件出现的时机(前或后):

8.2.4 系统触发器事件属性

除DML语句的列属性外,其余事件属性值可通过调用ORACLE定义的事件属性函数来读取

1创建触发器,存放有关事件信息

3 --创建用于记录事件用的表 10 --创建触犯发器

2创建登录、退出触发器。

6 --创建登录触发器 13 --创建退出触发器
8.2.5 使用触发器谓词
8.2.6 重新编译触发器

   如果在触发器内调用其它函数或过程当这些函数或过程被删除或修改后,触发器的状态将被标识为无效当DML语句激活一个无效触发器时,ORACLE将重新编译触发器代码如果编译时发现错誤,这将导致DML语句执行失败

在PL/SQL程序中可以调用ALTER TRIGGER语句重新编译已经创建的触发器,格式为:

其中:DEBUG 选项要器编译器生成PL/SQL 程序条使其所使用嘚调试代码

8.3 删除和使能触发器

当删除其他用户模式中的触发器名称,需要具有DROP ANY TRIGGER系统权限当删除建立在数据库上的触发器时,用户需要具有ADMINISTER DATABASE TRIGGER系统权限

此外,当删除表或视图时建立在这些对象上的触发器也随之删除。

有效状态(ENABLE):当触发事件发生时处于有效状态的数据庫触发器TRIGGER 将被触发。

无效状态(DISABLE):当触发事件发生时处于无效状态的数据库触发器TRIGGER 将不会被触发,此时就跟没有这个数据库触发器(TRIGGER) 一样

數据库TRIGGER的这两种状态可以互相转换。格式为:

8.4 触发器和数据字典

8.5 数据库触发器的应用举例

10 --在触发器中调用该过程显示dept_summary标中的数据

4创建INSTEAD OF 触发器。首先创建一个视图myview, 由于该视图是复合查询所产生的视图所以不能执行DML语句。根据用户对视图所插入的数据判断需要将数据插叺到哪个视图基表中然后对该基表执行插入操作。]

30 ''的部门已存在插入操作失败!''); 41 ''的人员已存在,插入操作失败!'');

5利用ORACLE事件属性函数创建一个系统事件触发器。首先创建一个事件日志表eventlog由它存储用户在当前数据库中所创建的数据库对象,以及用户的登陆和注销、数據库的启动和关闭等事件之后创建trig4_ddl、trig4_before和trig4_after触发器,它们调用事件属性函数将各个事件记录到eventlog数据表中

2 -- 创建用于记录事件日志的数据表 32 --将倳件属性插入到事件日志表中

8.6 数据库触发器的应用实例

   用户可以使用数据库触发器实现各种功能:

增强数据的完整性管理;

例:修改DEPT表的DEPTNO列时,同时把EMP表中相应的DEPTNO也作相应的修改;

例:保证对EMP表的修改仅在工作日的工作时间;

帮助式显复杂的商业管理

我要回帖

更多关于 设计的程序是什么 的文章

 

随机推荐