2017-07-31 7 views
0

次の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

だから、手続きに上記 'insert'文を置きます。何が効いていないのですか? –

+0

@WilliamRobertson私はちょうど間違った構文で実行していたが、これは簡単だったか分からなかった。挿入する前にテーブルを切り捨てる余分な行を書くことができるかどうかを知りたいだけですか? – Auguster

答えて

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; 
+0

挿入する前にテーブルTABLEを切り捨てたい場合、挿入する前に余分な行を追加することはできますか? – Auguster

+0

はいできます。私はクエリを編集しました。 –

関連する問題