ORACLE中触发器的判断IF语句

CREATE OR REPLACE TRIGGER CESHI
BEFORE UPDATE
ON FRONT_A
FOR EACH ROW
BEGIN
IF UPDATING('FUCK') THEN

ELSE

UPDATE FRONT_B B SET B.NAMEB='123456'
WHERE B.CODEB=:NEW.CODE;
END IF;
END;

如上面那个例子,我在IF条件成立后,不想执行任何操作,在THEN和ELSE之间需要写什么东西?
最新回答
风吹过竹林

2024-09-17 01:18:20

加一行 NULL 即可

例如:

SQL> DECLARE
2 testvalue INT;
3 BEGIN
4 testvalue := 200;
5
6 IF testvalue > 100 THEN
7
8 ELSIF testvalue = 100 THEN
9 dbms_output.put_line( '100' );
10 ELSE
11 dbms_output.put_line( '100-' );
12 END IF;
13
14 END;
15 /
ELSIF testvalue = 100 THEN
*
ERROR 位于第 8 行:
ORA-06550: 第 8 行, 第 9 列:
PLS-00103: 出现符号 "TESTVALUE"在需要下列之一时:
:= . ( @
% ;
ORA-06550: 第 14 行, 第 4 列:
PLS-00103: 出现符号 ";"在需要下列之一时:
if

上面的例子, 可以看出,如果 IF ELSE 里面, 没有内容, 那么编译不通过。

下面是 加一行 NULL 通过的例子:

SQL> DECLARE
2 testvalue INT;
3 BEGIN
4 testvalue := 200;
5
6 IF testvalue > 100 THEN
7 NULL;
8 ELSIF testvalue = 100 THEN
9 dbms_output.put_line( '100' );
10 ELSE
11 dbms_output.put_line( '100-' );
12 END IF;
13
14 END;
15 /
PL/SQL 过程已成功完成。
夏陌_年華

2024-09-17 03:54:01

你把UPDATING('FUCK')取反,连else就可以去掉了