Plsql PL/SQL过程来运行一些语句,然后将结果记录到表中
我需要使用pl/sql过程自动执行以下指令集:Plsql PL/SQL过程来运行一些语句,然后将结果记录到表中,plsql,Plsql,我需要使用pl/sql过程自动执行以下指令集: SET DEFINE OFF; TRUNCATE TABLE EMP.dept; INSERT INTO EMP.dept values....; Commit; 此外,我需要将活动(成功/失败)记录到EMP.log表中 有人能帮我吗?根据EMP.dept表中的列,我将使用定义为以下步骤的程序: --The parameters to this procedure depend on the fields in EMP.dept --Thi
SET DEFINE OFF;
TRUNCATE TABLE EMP.dept;
INSERT INTO EMP.dept values....;
Commit;
此外,我需要将活动(成功/失败)记录到EMP.log表中
有人能帮我吗?根据
EMP.dept
表中的列,我将使用定义为以下步骤的程序:
--The parameters to this procedure depend on the fields in EMP.dept
--This example assumes EMP.dept has only 2 VARCHAR fields, but
--the parameter list can easily be modified:
--
CREATE OR REPLACE PROCEDURE PROC_NAME1(INPUT1 IN VARCHAR2, INPUT2 IN VARCHAR2) AS
V_FAILURE INTEGER;
BEGIN
V_FAILURE := 0;
BEGIN
EXECUTE IMMEDIATE 'TRUNCATE TABLE EMP.dept';
INSERT INTO EMP.dept (FIELD1, FIELD2) VALUES (INPUT1, INPUT2);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
V_FAILURE := 1;
ROLLBACK;
END;
BEGIN
--DEPENDING ON THE COLUMNS IN YOUR LOG_TABLE
--
INSERT INTO LOG_TABLE(STATUS, RUN_DATE)
VALUES (V_FAILURE, SYSDATE);
COMMIT;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END;
您可以通过使用EMP.dept%行类型中的rec_dept作为单个输入参数来避免参数列表,然后将insert into EMP.dept(field1,field2)值(input1,input2)更改为insert into EMP.dept值rec_dept.大警告;TRUNCATE命令发出隐式提交,因此无论块中的第二个操作是否失败或成功,回滚都不会恢复EMP.dept字段中的数据。谢谢!!,除此之外,如果日志表包含开始时间和结束时间等列,我们如何将它们记录到表中?感谢Mulander的评论!!那么,在这种情况下,有没有办法避免这种情况呢?另外,如果日志表中包含像start time和end time这样的列,我们如何将它们记录到表中呢?使用SYSDATE-它相当于当前的日期和时间。但这只会记录开始时间,我这里的问题是执行结束的结束时间?