各位大虾,小弟有问题请教:某个表的字段,会有很多个,如:
INT_COL1
INT_COL2
INT_COL3
.
.
.INT_COL100在触发器中 有没有方法可以动态比较下面(伪代码)语句
condition:
':new.INT_COL'||i|| '<> : old.INT_COL' ||i
其中index是变量,从1,2……100即是类似用循环实现下面的效果:
: new.INT_COL1<> : old.INT_COL1
: new.INT_COL2<> : old.INT_COL2
.
.
.
: new.INT_COL100<> : old.INT_COL100-----------------------------------------------------------
另外我的思路是:execute immediate 'select t.dummy from dual where :new.INT_COL'||i||'<>:old.INT_COL'||i
into compare_result;
if compare_result = 'Y' then
……或者execute immediate 'select t.dummy from dual t where \:new.INT_COL1 <> \:old.INT_COL1 escape :esc_name '
into compare_result
using '\';
if compare_result = 'Y' then
……但是非常遗憾的是,执行起来都是错误,我精疲力竭了,望各位大虾救救我,谢谢了:)
INT_COL1
INT_COL2
INT_COL3
.
.
.INT_COL100在触发器中 有没有方法可以动态比较下面(伪代码)语句
condition:
':new.INT_COL'||i|| '<> : old.INT_COL' ||i
其中index是变量,从1,2……100即是类似用循环实现下面的效果:
: new.INT_COL1<> : old.INT_COL1
: new.INT_COL2<> : old.INT_COL2
.
.
.
: new.INT_COL100<> : old.INT_COL100-----------------------------------------------------------
另外我的思路是:execute immediate 'select t.dummy from dual where :new.INT_COL'||i||'<>:old.INT_COL'||i
into compare_result;
if compare_result = 'Y' then
……或者execute immediate 'select t.dummy from dual t where \:new.INT_COL1 <> \:old.INT_COL1 escape :esc_name '
into compare_result
using '\';
if compare_result = 'Y' then
……但是非常遗憾的是,执行起来都是错误,我精疲力竭了,望各位大虾救救我,谢谢了:)
解决方案 »
- 很简单的ORACLE查询问题
- Oracle 为何不是条件越多查询越快?
- Kettle 将DB2中的表导入oracle是遇到的问题!!!
- 求SQL:计算指定日期的库存余额
- 请问Oracle 是不是把它管理的数据空间全部或分为 "表空间"这个东西? 新建用户的时候都要指定表空间
- 关于oracle8i/9i安装问题,请教!!在线等待!!!!
- 项目开始动作了,我该从何入手来设计数据库了,请大家交流交流呀!!!
- 如何在oracle导入excle表里面的数据
- 存储过程中执行update语句,锁表。update语句放在外面,则不会执行锁表。
- 分析drop col对于数据存储块做了什么
- 实施RAC在raw设备上手工创建数据库出问题
- oracle中查询的结果横,竖混合着排
在用execute immediate执行
select t.dummy from dual where :new.INT_COL1<>:old.INT_COL1
的时候,Oracle把这句查询看作简单的字符串分析而不会把:new.INT_COL1和:old.INT_COL1值传入。
我们在plsql developer,可以建立一个测试存储过程,执行到可以触发触发器的sql时,断点跟入step into便可进入触发器。
看到怎么兄弟,帮忙,好感动,我以后会经常来的,谢谢:)