【发布时间】:2017-04-21 04:52:53
【问题描述】:
我是 Oracle 的新手。
我在 Oracle 中有一个表,它有 4 列 Period、Open_Flag、Creation_Dt、Updated_By。
Period 列是表的主键。
我已经创建了一个 proc,它将从表中的输入参数检查 period 的值,如果它存在,则必须更新 Open_flag 的值,否则应插入新记录。 create or replace
PROCEDURE PROC_REF_SAP_PERIOD(
V_PERIOD IN NUMBER,V_OPEN_FLAG IN VARCHAR2,V_CREATION_DT IN DATE,V_UPDATED_BY IN VARCHAR2)
AS
BEGIN
MERGE INTO REF_SAP_PERIOD T
USING (SELECT * FROM REF_SAP_PERIOD WHERE PERIOD=V_PERIOD )S
ON (T.PERIOD=S.PERIOD )
WHEN MATCHED THEN UPDATE SET OPEN_FLAG = V_OPEN_FLAG --WHERE PERIOD=V_PERIOD AND CREATION_DT=V_CREATION_DT AND UPDATED_BY=V_UPDATED_BY
WHEN NOT MATCHED THEN INSERT (PERIOD,OPEN_FLAG,CREATION_DT,UPDATED_BY) VALUES (V_PERIOD,V_OPEN_FLAG,V_CREATION_DT,V_UPDATED_BY);
END;
问题是更新在这种情况下运行良好,但是插入不起作用。
请帮助。
【问题讨论】:
-
请发短信not screenshots。说我想帮你;如果您发布了一些文本,我可以轻松复制代码,尝试编辑它;如果您发布图片,我只是投票结束问题。
-
对不起@Aleksej ...我现在更新了问题。