2017-08-29 6 views
0

私はinsertingのレコードをテーブルに書き込んだSPを持っています。しかし、ユーザーが_同じSAP_IDのレコードを再度入力すると、そのレコードを更新します。同じSAP_IDのデータがPL 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

関連する問題