Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OraclePL/SQL:导致触发的预定过程?_Oracle_Plsql_Triggers - Fatal编程技术网

OraclePL/SQL:导致触发的预定过程?

OraclePL/SQL:导致触发的预定过程?,oracle,plsql,triggers,Oracle,Plsql,Triggers,好的,我是Oracle PL/SQL新手,我偶然发现了一个我无法解决的问题。 我有一个将数据从一个表传输到另一个表的过程,还有一个在插入第二个表时激活的触发器。我使用DBMS_作业将该过程安排为每分钟运行一次(用于测试-一旦我弄明白了它就会每天运行)。SUBMIT-计划的部分工作正常,但是在完成该过程后,触发器不会触发。我试过使用before和afterinsert子句,但仍然不起作用。如果我直接调用这个过程,它就可以工作,并且触发了触发器。所以我已经在想预定的程序是否能触发扳机 这是计划的代码

好的,我是Oracle PL/SQL新手,我偶然发现了一个我无法解决的问题。 我有一个将数据从一个表传输到另一个表的过程,还有一个在插入第二个表时激活的触发器。我使用DBMS_作业将该过程安排为每分钟运行一次(用于测试-一旦我弄明白了它就会每天运行)。SUBMIT-计划的部分工作正常,但是在完成该过程后,触发器不会触发。我试过使用before和afterinsert子句,但仍然不起作用。如果我直接调用这个过程,它就可以工作,并且触发了触发器。所以我已经在想预定的程序是否能触发扳机

这是计划的代码:

DECLARE
  VJOBN BINARY_INTEGER;
BEGIN
  DBMS_JOB.SUBMIT(
  JOB => VJOBN,
  INTERVAL => 'SYSDATE + 1/2880', 
  WHAT => 'BEGIN my_procedure(); END;'
  );
END;


create or replace TRIGGER TO_PRJ
AFTER INSERT ON PROJECTS
FOR EACH ROW
BEGIN
  IF INSERTING
  THEN DBMS_OUTPUT.PUT_LINE('INSERTED PROJECT WITH ID:  '||:NEW.PROJECT_ID||')
  END IF;
END;​
表项目具有ID号、名称varchar2和其他一些不重要的内容。 该过程将ID和名称从订单转移到项目


另外,我正在使用,当我从中获得时间戳时,时间实际上比我晚了6个小时-不确定它是否有任何意义…

尝试使用调度程序,它比jobs好得多。并将触发器和表的代码带到那里,这可能会帮助

DBMS\u输出
DBMS\u作业
不以您试图使用它们的方式工作。计划作业可能正在运行,触发器正在触发-但由于执行
DBMS\u输出
命令的会话(即
DBMS\u作业
使用的内部会话)中需要激活
DBMS\u输出
,因此您将永远看不到任何输出


DBMS\u输出
的输出在整个会话中不可见,因此发出
DBMS\u作业的会话。提交
命令将不会收到输出,即使该会话激活了
DBMS\u输出

Oracle作业将按常规过程执行。不用担心触发器。如果在存储过程或表中设置触发器,它将照常运行。顺便问一下,你为什么把“存在和结束”放在什么子句中?@ppshein嗯。。。我担心触发器,因为当作业调用存储过程时它不会运行。我把结束这件事放在一边,因为这就是我在我读过的一个教程中看到的——不再记得是哪一个了,在试图找出答案的时候搜索了10亿次。我也尝试了调度程序——过程执行,但触发器没有触发。我用触发器代码更新了第一篇文章。有很多方法可以从调度程序发送消息,我从未使用过它,但它们确实存在。若你们需要信息,为什么你们不能使用特殊的表并在那个里插入数据呢?是的,我刚刚读到了,并且意识到发生了什么。但是,有没有一种方法可以让计划作业使用触发器输出消息?例如,可以使用表进行通信,或者使用UTL_文件写入文件。