触发器在Oracle PL / SQL中无法正确执行

KP1

我有一个触发器,它在更新后执行。它不按我想要的那样工作。

如何检查可为空的字段中的值是否发生了变化?我有以下为可空类型的字段:

FRM_DATE   DATE
FRM_TIME   DATE
THE_DATE   DATE
THE_TIME   NUMBER(4,2)
THE_BOOL   NUMBER(2)

仅在上述字段的值实际发生更改时,我才想执行一组逻辑。如果值相同,那么我不想执行代码。因此,从用户界面说,如果其中一个字段具有值并且用户将其删除(它现在变为NULL)并点击提交按钮,我希望我的逻辑能够执行,因为已经进行了更改。

我尝试了以下操作,但未执行我想要的逻辑:

IF (nvl(:old.FRM_DATE, '') <> nvl(:new.FRM_DATE,'')) THEN
   --My logic
END IF;

我也试过了

IF (nvl(:old.FRM_DATE, NULL) <> nvl(:new.FRM_DATE,NULL)) THEN
  --My logic
END IF;

有任何想法吗?

亲切的问候,

您不能将null与null进行比较,也不能将null与任何其他值进行比较,将逻辑更改为:

IF (nvl(:old.FRM_DATE, to_date('01-01-1900', 'dd-mm-yyyy')) <> nvl(:new.FRM_DATE,to_date('01-01-1900', 'dd-mm-yyyy'))) THEN
   --My logic
END IF;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Oracle中的PL / SQL触发器

来自分类Dev

Oracle PL / SQL约束触发器

来自分类Dev

Oracle中的PL / SQL触发器错误

来自分类Dev

Oracle PL / SQL触发器-捕获名称错误的插入

来自分类Dev

更新Oracle触发器之前的问题[PL / SQL]

来自分类Dev

Oracle PL / SQL触发器-捕获名称错误的插入

来自分类Dev

涉及多表Oracle、PL/SQL的触发器

来自分类Dev

更新不同表的 Oracle PL/SQL 触发器

来自分类Dev

如何正确处理PL SQL中的触发器?

来自分类Dev

PL/SQL 触发器防止插入

来自分类Dev

PL/SQL 创建触发器

来自分类Dev

pl sql触发器总数

来自分类Dev

插入之前的PL / SQL Oracle触发器无法获取新的唯一主ID

来自分类Dev

在Oracle PL / SQL中,触发器名称的最大长度是多少?

来自分类Dev

如何在Oracle PL / SQL中实现AFTER INSERT触发器?

来自分类Dev

在pl / sql中触发触发器引发错误

来自分类Dev

Oracle PL / SQL从触发器的:NEW中选择所有列

来自分类Dev

Oracle PL/SQL 触发器:在更新语句后自动重置列值

来自分类Dev

Oracle PL/SQL 级联触发器删除未按预期工作

来自分类Dev

PL / SQL触发器:无法创建顶点用户

来自分类Dev

在PL / SQL中获取触发器中的事件信息

来自分类Dev

替换PL / SQL触发器中的子查询

来自分类Dev

在 PL/SQL 触发器中查找 JSON 数组的长度

来自分类Dev

PL / SQL触发器返回缺货错误:使用编译错误创建的触发器

来自分类Dev

复合触发器上的 PL/SQL 触发器变异表

来自分类Dev

Oracle SQL触发器

来自分类Dev

使用PL / SQL块创建触发器时出错

来自分类Dev

PL / SQL触发器-计算百分比

来自分类Dev

PL SQL触发器不起作用