Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Plsql PL/SQL过程来运行一些语句,然后将结果记录到表中_Plsql - Fatal编程技术网

Plsql 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

我需要使用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
--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-它相当于当前的日期和时间。但这只会记录开始时间,我这里的问题是执行结束的结束时间?