PL/SQL游标和触发器

游标

在PL/SQL块中执行SELECT、INSERT、DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),即缓冲区。游标是指向该区的一个指针,或是命名一个工作区(Work Area),或是一种结构化数据类型。它为应用等量齐观提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法,是设计嵌入式SQL语句的应用程序的常用编程方式。

   定位行,逐行跳动 

游标分类

  1. 显式 游标用于处理SELECT语句返回的多行数据;人为创建,干预

  2. 隐式 游标用于处理SELECT INTO和非查询的DML语句;系统自动创建,管理

常用属性 CURSOR

%ISOPEN

用于确定游标是否已经打开。如果游标已经打开,则返回值为TRUE;否则返回FALSE

%FOUND

检查是否从结果集中提取到数据。如果提取到数据,则返回值为TRUE;否则返回FALSE

%NOTFOUND

与%FOUND属性恰好相反,如果提取到数据,则返回值为FALSE;否则返回TRUE

%ROWCOUNT

返回到当前行为止已经提取到的实际行数

触发器

触发器是指被隐含执行的存储过程,它可以使用PL/SQL进行开发

当发生特定事件(如修改表、创建对象、登录到数据库)时,Oracle会自动执行触发器的相应代码

触发器的类型

1、DML触发器

在对数据库表进行DML(insert,update,delete)操作时触发,并且可以对每行或者语句操作上进行触发。

2、替代触发器

是oracle8专门为进行视图操作的一种触发器

3、系统触发器

对数据库系统事件进行触发,如启动、关闭等

注意事项:

  1. 触发器不接受参数。

  2. 一个表上最多可有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。并各触发器之间不能有矛盾。

  3. 在一个表上的触发器越多,对在该表上的DML操作的性能影响就越大。

  4. 触发器最大为32KB。若确实需要,可以先建立过程,然后在触发器中用CALL语句进行调用。

  5. 触发器中不能包含事务控制语句(COMMIT,ROLLBACK,SAVEPOINT)。因为触发器是触发语句的一部分,触发语句被提交、回退时,触发器也被提交、回退了。在触发器主体中调用的任何过程、函数,都不能使用事务控制语句。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值