【发布时间】:2015-06-22 22:32:14
【问题描述】:
我已经编写了一个存储过程,我试图在其中插入和更新值。我在执行插入时担心(它包含 5 个参数和不同的数据类型)有不同的值,并且在更新时(它包含 6 个参数和不同的数据类型)有不同的值。我想对这两种情况使用单个存储过程(插入/更新)。如何管理参数?
程序
create or replace procedure PS_File_Update_Insert (
Input_val in varchar2
, p1 in varchar2
, p2 in varchar2
, p3 in varchar2
, p4 in varchar2
, p5 in varchar2
)
is
BEGIN
if Input_val = 'Insert' then
insert into PS_FILE (SRC_FILE_ID
,TRUSTED_PARTY_ID
,FILE_NM,FILE_PROC_DT
,FILE_STATUS)
values (SRC_FILE_ID_SEQ.nextval
,1234
,'zxcv'
,SYSDATE
,'NEW');
elsif Input_val = 'update' then
update PS_FILE
set FILE_STATUS='STAGING'
, REC_CNT='abcd'
, ERR_CNT='123'
, DUPE_CNT=NULL
where SRC_FILE_ID='1234';
end if;
end;
【问题讨论】:
-
你是说当它是一个更新时你需要传递
SRC_FILE_ID作为一个额外的参数,而不是你在它是一个插入时传递的参数(它是从一个序列中自动生成的)?跨度> -
我已经整理了你的代码,所以我们可以想象它可能会编译,否则会分散注意力。我建议你不要使用
PRAGMA AUTONOMOUS_TRANSACTION;,除非你对 PL/SQL 有更好的理解,尤其是那个子句。
标签: oracle plsql system-design