将数据插入到使用存储过程从其他表派生的表中插入数据
问题描述:
我使用以下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;
答
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
是的,你可以。我编辑了查询。 –
所以把上面的'insert'语句转换的过程。什么不起作用? –
@WilliamRobertson我只是在错误的语法运行不知道这是这么简单。只是想知道如果我可以写入额外的行来插入之前截断表? – Auguster