使用存储过程将数据插入从其他表派生的表中

时间:2017-07-31 17:59:27

标签: database oracle plsql oracle12c

我使用以下sql代码在从其他表派生后将数据插入表中。我对高级PL / SQL并不陌生。我想构建一个存储过程,实现与此SQL代码相同的功能。我的想法是,我将只执行该过程,它将加载数据而不是一次又一次地运行此代码。我尝试了一些例子,但都编译错误,大多数例子都是SQL服务器格式。

Insert into TABLE(ID,NBR,VALUE,DESCRIPTION,STATUS,FILLER,SOURCE_SYSTEM,DATE_LOADED_TIMESTAMP)
SELECT SUBSTR(COLUMN1,1,2) as ID,
SUBSTR(COLUMN1,3,3) as NBR,
SUBSTR(COLUMN1,6,14) as VAUE,
SUBSTR(COLUMN1,20,30) as DESCRIPTION,
SUBSTR(COLUMN1,50,1) as STATUS,
SUBSTR(COLUMN1,51,2) as FILLER,
SOURCE_SYSTEM as SOURCE_SYSTEM,
CURRENT_TIMESTAMP AS DATE_LOADED_TIMESTAMP
from TMP_TABLE;

1 个答案:

答案 0 :(得分:0)

This may help you:


        create or replace procedure your_procedure_name
        as
        begin 
        Truncate table TABLE;
        Insert into TABLE(ID,NBR,VALUE,DESCRIPTION,STATUS,FILLER,SOURCE_SYSTEM,DATE_LOADED_TIMESTAMP)
        SELECT SUBSTR(COLUMN1,1,2) as ID,
        SUBSTR(COLUMN1,3,3) as NBR,
        SUBSTR(COLUMN1,6,14) as VAUE,
        SUBSTR(COLUMN1,20,30) as DESCRIPTION,
        SUBSTR(COLUMN1,50,1) as STATUS,
        SUBSTR(COLUMN1,51,2) as FILLER,
        SOURCE_SYSTEM as SOURCE_SYSTEM,
        CURRENT_TIMESTAMP AS DATE_LOADED_TIMESTAMP
        from TMP_TABLE;

    COMMIT;
        end;

Test with:

    BEGIN
       your_procedure_name;
    END;