我需要手动调用 PROC_ENTRY_TIME 程序,以便将新数据加载到 TABLE_ENTRY_TIME 中。我该怎么做?
CREATE OR REPLACE PACKAGE BODY PK_ENTRY_TIME IS
PROCEDURE PROC_ENTRY_TIME
AS
BEGIN
execute immediate 'truncate table TABLE_ENTRY_TIME';
insert into TABLE_ENTRY_TIME
SELECT TABLE_CASE.ID_NUMBER , max( TABLE_ACT_ENTRY.ENTRY_TIME )
FROM SA.TABLE_CASE TABLE_CASE
INNER JOIN SA.TABLE_ACT_ENTRY TABLE_ACT_ENTRY
ON TABLE_CASE.OBJID = TABLE_ACT_ENTRY.ACT_ENTRY2CASE
commit;
END PROC_ENTRY_TIME;
答案 0 :(得分:0)
@Sithara,插入后你有一个缺少的分号,我编辑了代码,试了一下。稍后按照@a_horse_with_no_name建议的那样,即
exec pk_entry_time.proc_entry_time
注意:不确定你是如何调试的,但是把它放在任何编辑器中会给你一些关于这个问题的线索。
答案 1 :(得分:0)
“它给出了无效的sql语句错误。不起作用!”
好吧,您发布的代码无效,因此无法编译。你有一个缺少的分号,你需要一个GROUP BY子句来表示聚合条件。如果你这样修理它会怎么样?
CREATE OR REPLACE PACKAGE BODY PK_ENTRY_TIME IS
PROCEDURE PROC_ENTRY_TIME
AS
BEGIN
execute immediate 'truncate table TABLE_ENTRY_TIME';
insert into TABLE_ENTRY_TIME
SELECT TABLE_CASE.ID_NUMBER , max( TABLE_ACT_ENTRY.ENTRY_TIME )
FROM SA.TABLE_CASE TABLE_CASE
INNER JOIN SA.TABLE_ACT_ENTRY TABLE_ACT_ENTRY
ON TABLE_CASE.OBJID = TABLE_ACT_ENTRY.ACT_ENTRY2CASE
group by table_case.id_number;
commit;
END PROC_ENTRY_TIME;
END PK_ENTRY_TIME;
至于运行它,取决于您使用的是哪个客户端。以下是如何运行匿名PL / SQL块:
begin
pk_entry_time.proc_entry_time;
end;
/