Oracle PL / SQL:此触发器中缺少什么?

时间:2014-07-17 18:46:55

标签: sql oracle plsql

我一般都是触发器和PL / SQL的新手。我的测试目的是使用Oracle Database Express和自己的命令行。

应该创建触发器的脚本如下所示:

CREATE OR REPLACE TRIGGER SESSION_LOGIN_HANDLER 
AFTER UPDATE OF LOGGED_IN ON BENUTZERKONTO 
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE

BEGIN 

    if (:OLD.LOGGED_IN == 1)
    if (:NEW.LOGGED_IN == 0)
    {
        UPDATE SESSION_LOGGING AS current_session SET DAUER = (sysdate-ZEITSTEMPEL) WHERE DAUER IS NULL AND SECURE_IDENTIFIER = :NEW.SECURE_IDENTIFIER;
    }
END; 

commit;

我用@C调用它:/ SQL ... / DB_TRIGGER.trg;在命令行中。 然而,在调用它之后,命令行似乎只是在每次按下时计算行号。 似乎它以某种方式等待另一条线或任何东西,但我不知道>< 也没有失败的消息或任何东西。 我甚至评论了" BEGIN"之间的整个代码。和"结束"没有区别!

有人可以帮助这个初学者吗?提前谢谢!

1 个答案:

答案 0 :(得分:2)

没有Oracle语法,它必须是这样的:

if (:OLD.LOGGED_IN = 1) then
  if (:NEW.LOGGED_IN = 0) then   
     UPDATE SESSION_LOGGING AS current_session SET DAUER = (sysdate-ZEITSTEMPEL) 
     WHERE DAUER IS NULL AND SECURE_IDENTIFIER = :NEW.SECURE_IDENTIFIER;
  end if;
end if;