Oracle SQL触发器错误:ORA-00933

扎卡里

所以我试图创建一个可以改变记录时间戳的触发器,到目前为止

    create or replace TRIGGER job_date_set
      AFTER INSERT OR UPDATE OF start_date, closing_date ON jobs
      FOR EACH ROW
    BEGIN
      IF UPDATING THEN
        CASE
          WHEN :OLD.closing_date != :NEW.closing_date THEN 
            UPDATE jobs
            SET closing_date = to_date(to_date(:NEW.closing_date,'DD/MON/YYYY')||' 23:59:59','DD/MON/YYYY HH24:MI:SS')
            WHERE :OLD.job_id = job_id;
          WHEN :OLD.start_date != :NEW.start_date THEN 
            UPDATE jobs
            SET start_date = to_date(to_date(:NEW.start_date,'DD/MON/YYYY') ||' 00:00:00','DD/MON/YYYY HH24:MI:SS')
            WHERE :OLD.job_id = job_id;
        END CASE;
      END IF;
      IF INSERTING THEN
        UPDATE jobs
        SET closing_date = to_date(to_date(:NEW.closing_date,'DD/MON/YYYY') ||' 23:59:59','DD/MON/YYYY HH24:MI:SS')
        SET start_date = to_date(to_date(:NEW.start_date,'DD/MON/YYYY')||' 00:00:00','DD/MON/YYYY HH24:MI:SS')
        WHERE :OLD.job_id = job_id;   
      END IF;
    END;

这里是错误的描述:编译失败,第17行(16:54:27)与编译错误相关的行号是相对于第一个BEGIN语句的。这仅影响数据库触发器的编译。PL / SQL:ORA-00933:SQL命令未正确结束编译失败,第15行(16:54:27)与编译错误相关的行号是相对于第一个BEGIN语句的。这仅影响数据库触发器的编译。PL / SQL:忽略了SQL语句

听起来,它认为我的if语句没有正确关闭,但是我不知道我哪里出错了

弯头

代替:

    UPDATE jobs
    SET closing_date = to_date(to_date(:NEW.closing_date,'DD/MON/YYYY') ||' 23:59:59','DD/MON/YYYY HH24:MI:SS')
    SET start_date = to_date(to_date(:NEW.start_date,'DD/MON/YYYY')||' 00:00:00','DD/MON/YYYY HH24:MI:SS')
    WHERE :OLD.job_id = job_id;   

它的:

    UPDATE jobs
    SET closing_date = to_date(to_date(:NEW.closing_date,'DD/MON/YYYY') ||' 23:59:59','DD/MON/YYYY HH24:MI:SS'),
        start_date = to_date(to_date(:NEW.start_date,'DD/MON/YYYY')||' 00:00:00','DD/MON/YYYY HH24:MI:SS')
    WHERE :OLD.job_id = job_id;   

即有一个逗号而不是第二个SET关键字。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Oracle Error-ORA-00933:SQL命令未正确结束

cx_Oracle:错误933。ORA-00933:“ SQL命令未正确结束”:SQL命令错误?

触发器中的SQL ORACLE错误

Oracle日期格式错误-ORA-00933:SQL命令未正确结束

执行查询时出现Oracle错误-ORA-00933:SQL命令未正确结束

Oracle查询给出错误“ ORA-00933:SQL命令未正确结束”

SQl-ORA-00933错误

Oracle SQL DB选择多方联接错误联接错误-ORA-00933:SQL命令未正确结束

Oracle - 触发器错误

Oracle sql developer触发器错误ORA-04088:触发器'SYSTEM.LRES_PROTOKOLL'执行期间出错

错误 ORA-00933,PL/SQL:SQL 语句被忽略,PLS-00103 在 oracle 中运行时,如何解决?

.net sql查询中的Oracle参数-ORA-00933:SQL命令未正确结束

Oracle SQL触发器

cx_Oracle.DatabaseError:ORA-00933:SQL命令未正确结束

Oracle:按订单退还ORA-00933:SQL命令未正确结束

VB.NET Oracle SQL“ INSERT INTO”与“ RETURNING INTO”给出ORA-00933命令未正确结束

使用Oracle.ManagedDataAccess的“ ORA-00933:SQL命令未正确结束”

ORA-00933: SQL 命令未在 oracle 数据库中正确结束

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

Oracle中的PL / SQL触发器错误

触发器因 Oracle SQL 的编译错误而创建

Oracle 12 SQL-ORA-00933,ORA-0923,ORA-00979我在做什么错?

oracle php 创建和填充表的问题 ORA-00933 ORA-00922 ORA-00928

Oracle触发器错误“ ORA-00942:表或视图不存在”

在Oracle8i版本8.1.7.0.1上提供ORA 00933的简单联接查询

Oracle 18c - 创建物化视图时出错 - ORA-00933

在Apex Oracle SQL中创建表/序列/触发器-ORA-00922 / ORA-00907 / ORA-00922

我想做一个oracle查询,但我真的不熟悉它,SQL错误消息[Err] ORA-00933:SQL命令未正确结束

选择查询,其中Oracle 10g中的条件赋予ORA-00933:SQL命令未正确结束