oracle冒号问题联系触发器中new和old的冒号问题':'
2012-04-08 22:45
357 查看
问:
这代码中的冒号(:)是什么意思呢?
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;
/
这代码中的冒号(:)是什么意思呢?
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;
/
相关文章推荐
- oracle冒号问题联系触发器中new和old的冒号问题':'
- Orcale触发器中的冒号,new和old
- 在linux上安装oracle出现Can't connect to X11 window。。。的问题
- oracle自增auto_increment与oracle 创建触发器是非法的 ORA-04098: trigger 'USER_TRIGGER'is invalid and failed re-v
- LUA中Attempt to call a non-callable object或attempt to call field 'new' (a nil value)问题的解决
- Oracle 内的转义字符 单引号'和&符的问题
- 如何解决ie8 不支持new Date('2012-11-10')的问题
- 新手第一次联系oracle的碰到的触发器不能创建的问题
- Oracle (触发器)execute immediate 'sql语句'
- oracle插入特殊字符'&'问题
- 编译过程中弹出new(35) : error C2061: syntax error : identifier 'THIS_FILE'问题的原因及解决方法
- 【转】oracle中触发器中:new和:old 的使用方法
- oracle插入特殊字符'&'问题
- [跟着hsp步步学习系统]oracle培训学习集锦全360度扫描(11)触发器old,new 与行级与语句级及case when
- window平台下 Eclipse Ndk开发中的Method 'NewStringUTF' could not be resolved问题
- window平台下 Eclipse Ndk开发中的Method 'NewStringUTF' could not be resolved问题
- sql server和oracle中关于null和''的问题
- oracle 临时表 解决 "表 *** 发生了变化,触发器/函数不能读"的问题
- Oracle中的'&'符号问题
- oracle 临时表 解决 "表 *** 发生了变化,触发器/函数不能读"的问题