gpt4 book ai didi

Oracle PL/SQL : a scheduled procedure, 导致触发触发器?

转载 作者:行者123 更新时间:2023-12-04 06:06:44 24 4
gpt4 key购买 nike

好的,我是 Oracle PL/SQL 的新手,我偶然发现了一个我无法弄清楚的问题。
我有一个程序可以将数据从一个表传输到另一个表,还有一个触发器在插入第二个表时激活。我使用 安排该程序每分钟运行一次(用于测试 - 一旦我想通了,就会每天运行一次)。 DBMS_JOB.SUBMIT - 预定的部分工作正常,但是在程序完成后触发器不会被触发。我尝试了前后插入子句,但它仍然不起作用。如果我直接调用该过程,它就可以工作,并且确实可以很好地触发触发器。所以......我已经想知道预定程序是否可以触发触发器?!

这是时间表的代码:

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;​

表 PROJECTS 有 ID 号、名称 varchar2 和其他一些不重要的。
该过程将 ID 和名称从订单传输到项目。

附言我正在使用 http://apex.oracle.com当我从中获得时间戳时,时间实际上比我晚了 6 小时-不确定它是否有任何意义......

最佳答案

DBMS_OUTPUTDBMS_JOB不要以您尝试使用它们的方式工作。预定的作业可能正在运行,触发器正在触发 - 但由于 DBMS_OUTPUT需要在执行 DBMS_OUTPUT 的 session 中激活命令(即 DBMS_JOB 使用的内部 session )您将永远看不到任何输出。
DBMS_OUTPUT的输出在整个 session 中不可见,因此发出 DBMS_JOB.submit 的 session 命令不会收到输出,即使 DBMS_OUTPUT为该 session 激活。

关于Oracle PL/SQL : a scheduled procedure, 导致触发触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com