2017-08-29 40 views
0

我有一個SP,其中我已將inserting記錄的邏輯寫入表中。但是現在如果用戶再次輸入記錄_對於相同的SAP_ID,則我想更新該記錄。如果在PL中再次輸入相同SAP_ID的數據,則更新表SQL

那麼如何再次添加相同的SAP_ID更新記錄?

下面是我的存儲過程: -

PROCEDURE INSERT_INTO_EXIST_SAPID 
    (
P_SAPID IN NVARCHAR2, 
P_VENDOR_NAME IN NVARCHAR2, 
P_ODU_MODEL IN NVARCHAR2, 
P_ANT_MODEL IN NVARCHAR2, 
P_OMT_MODEL IN NVARCHAR2, 
P_QUANTITY IN NVARCHAR2, 
P_CREATED_BY IN NVARCHAR2, 
P_CREATED_DATE IN NVARCHAR2, 
P_IS_EXISTSAP IN CHAR, 
PREQUEST_ID OUT NUMBER  
) 

AS BEGIN 

INSERT INTO UBR_STRUCTURE_DETAILS 
            (
            RJ_SAPID, 
            VENDOR_NAME, 
            ODU_EQP_MODEL, 
            ANT_EQP_MODEL, 
            OMT_EQP_MODEL, 
            MODEL_COUNT, 
            CREATED_USER, 
            CREATED_DATE, 
            EXIST_SAPID 
           ) 
     VALUES 

           (
            P_SAPID, 
            P_VENDOR_NAME, 
            P_ODU_MODEL, 
            P_ANT_MODEL, 
            P_OMT_MODEL, 
            P_QUANTITY, 
            P_CREATED_BY, 
            SYSDATE, 
            P_IS_EXISTSAP 
           )returning REQUEST_ID INTO PREQUEST_ID; 
END INSERT_INTO_EXIST_SAPID; 

回答

2

你可以使用MERGE聲明:

MERGE INTO UBR_STRUCTURE_DETAILS trg 
USING (SELECT P_SAPID, 
       P_VENDOR_NAME, 
       P_ODU_MODEL, 
       P_ANT_MODEL, 
       P_OMT_MODEL, 
       P_QUANTITY, 
       P_CREATED_BY, 
       SYSDATE, 
       P_IS_EXISTSAP 
     FROM dual) src 
    ON trg.<col_to_match> = src.<col_to_match> 
WHEN MATCHED THEN 
     UPDATE SET 
      col_name = src.col_name 
WHEN NOT MATCHED THEN 
     INSERT (col_list) 
     VALUES (...); 
+0

是什麼意思嗎? ' = src。'你在比較唯一的列進行更新嗎? – BNN

+0

@VVVV我指的是唯一標識行的列,在您的情況下可能是'RJ_SAPID'和'P_SAPID' – lad2025

相關問題