ORACLE中触发器的判断IF语句
CREATEORREPLACETRIGGERCESHIBEFOREUPDATEONFRONT_AFOREACHROWBEGINIFUPDATING('FUCK')THEN...
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之间需要写什么东西? 展开
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之间需要写什么东西? 展开
2013-03-07
展开全部
加一行 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 过程已成功完成。
例如:
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 过程已成功完成。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询