Orcale触发器中的冒号,new和old
来源:互联网 发布:软件编程自学 编辑:程序博客网 时间:2024/05/17 07:19
问:
这代码中的冒号(:)是什么意思呢?
VARIABLE x REFCURSOR
EXEC authors_sel(:x)
print x
答:
x 是一个主变量
主变量是一个声明在主环境中的变量,它会被传递到一个或多个PL/SQL程序中,
在程序中可以跟其他的变量一样使用。
SQL*Plus和PL/SQL都能引用主变量,SQL*Plus还可以显示主变量的值。
但是,在PL/SQL中引用主变量的时候,我们必须加上冒号(:)前缀
:x表示引用sqlplus中定义的变量
触发器 new 和 old 修饰符
²OLD和NEW修饰符只用于记录级触发器。
²在SQL和PL/SQL语句中,OLD和NEW前面要加“:”。
²在WHEN限制语句中,OLD和NEW前面不要加“:”,因为WHEN子句在PL/SQL块的外部。
²注意:如果对大表做大量DML操作,记录级触发器会影响数据库性能。
²注意:记录级触发器中,不能从正在被修改的表中读取数据。
例子:
CREATE OR REPLACE TRIGGER derive_commission_pct
BEFORE INSERT OR UPDATE OF sal ON emp
FOR EACH ROW
WHEN (NEW.job = 'SALESMAN')
BEGIN
IF INSERTING
THEN :NEW.comm :=0;
ELSIF :OLD.comm IS NULL
THEN :NEW.comm := 0;
ELSE :NEW.comm := :OLD.comm * 1.05;
END IF;
END;
/
- create
or replace trigger TRI_PrintTest - before
delete or insert or update on TEST_EXAM --触发事件 - for
each --row 每修改一行都需要调用此过程 - begin
-
dbms_output.put_line(:new.IDNEW); -
dbms_output.put_line(:old.IDNEW); - end;
原IDNEW字段是1时,
使用
update TEST_EXAM set IDNEW=5 where SN='5454';
则打印结果为:
5
1
- Orcale触发器中的冒号,new和old
- orcale 触发器 :new 和 :old 的区别
- Mysql 触发器中的new 和 old
- 触发器中的:NEW 和 :OLD的用法
- oracle冒号问题联系触发器中new和old的冒号问题':'
- oracle冒号问题联系触发器中new和old的冒号问题':'
- 触发器中 :new 和 :old
- Oracle触发器中的:new和:old的使用
- Oracle触发器中的NEW和Old关键字说明
- 触发器中的 "临时表" old 与 new
- ORACLE触发器和new、old特殊变量
- ORACLE触发器和new、old特殊变量
- ORACLE触发器和new、old特殊变量
- ORACLE触发器和new、old特殊变量
- Oracle触发器和new、old特殊变量
- 触发器里的new和old
- mysql 触发器OLD和NEW关键字
- Oracle触发器和new、old特殊变量
- 视频分析的“新革命”——久凌视频分析产品
- SEO新手的赚钱项目 - 住哪网酒店联盟
- POJ 2965 The Pilots Brothers' refrigerator
- a标签通过href调用脚本实现打开新窗体
- 破解NET的四大神器+[说明文档]
- Orcale触发器中的冒号,new和old
- Company简单链表
- ZedBoard学习(6)-System Generator实现串口通信(一行HDL代码都不用写)
- PleaseHoldException
- 【转】为什么程序员新手要考虑接单
- poj1226 kmp 最长公共子串
- 多个细节帮助你更优雅地书写页面
- 母牛生小牛
- Armadillo脱壳知识和方法大全