以下是查询:
INSERT INTO resumo
(tipo, id_tipo, qtde)
SELECT tipo, id_tipo, COUNT (*) qtde
FROM tabela
WHERE id_tipo > 400
GROUP BY tipo, id_tipo;
COMMIT;
如果我手动运行,则需要30秒才能执行。
如果我将相同的查询放入一个包并创建一个作业来运行它,它就会一直运行,锁定表resumo
。任何想法为什么会发生这种情况?
它是oracle 11g。
修改
套餐规范:
CREATE OR REPLACE PACKAGE PKG_TESTE AS
procedure geraTabela;
End PKG_TESTE;
/
套餐正文:
CREATE OR REPLACE PACKAGE body PKG_TESTE AS
procedure geraTabela is
begin
INSERT INTO resumo
(tipo, id_tipo, qtde)
SELECT tipo, id_tipo, COUNT (*) qtde
FROM tabela
WHERE id_tipo > 400
GROUP BY tipo, id_tipo;
COMMIT;
end;
end PKG_TESTE;
/
作业:
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'PKG_TESTE.geraTabela;'
,next_date => to_date('18/05/2016 11:00:00','dd/mm/yyyy hh24:mi:ss')
,interval => 'SYSDATE+60/1440 '
,no_parse => FALSE
);
COMMIT;
END;
/