PL/SQL 프로시져 중복 업데이트 관련 문의 드립니다. 0 2 2,642

by 서주형 [PL/SQL] PL/SQL UPDATE PROCEDURE [2016.11.04 14:32:14]


질문좀 드리고자 합니다. PL/SQL 에서 Begin 부터 시작하는 곳에 2개의 테이블을 동시에 업데이트 하고자 합니다.
현재 소스를 컴파일 할 경우 문제는 발생하지 않으나, 처음에 시작하는 SP_MASTER는 업데이트가 되나,
두번째 있는 SP_PRODUCT는 업데이트가 되지가 않네요...

2개의 테이블을 동시에 업데이트 하려면 어떻게 해야 하는지요?


PROCEDURE SP_UPDATE_SP_MASTER(
        -- SYSTEM FIXED
        P_ERRFLAG           OUT NVARCHAR2,
        P_ERRCODE           OUT NVARCHAR2,
        P_ERRMSG            OUT NVARCHAR2,
        P_PROGRAMID         IN  NVARCHAR2,
        P_COMPANYID         IN  NVARCHAR2,
        P_LANGUAGE          IN  NVARCHAR2,
        P_BRANDCODE         IN  NVARCHAR2,
        P_EMPID             IN  NVARCHAR2, 
        P_EMPTYPE           IN  NVARCHAR2,
        P_IPADDR            IN  NVARCHAR2,
        P_COMPUTERNAME      IN  NVARCHAR2,
        P_BASEDATE          IN  NVARCHAR2,
        -- USER DEFINE PARAMATER
        P_PRODUCT_NUMBER    IN  VARCHAR2,
        P_FAMILY_CODE       IN  VARCHAR2,
        P_SEQ               IN  NUMBER,
        P_VAL_TEXT          IN  VARCHAR2,
        P_VAL_BOOLIN        IN  VARCHAR2,
        P_VAL1_NUMBER       IN  NUMBER,
        P_VAL2_NUMBER       IN  NUMBER,
        P_VAL3_NUMBER       IN  NUMBER,
        P_VAL4_NUMBER       IN  NUMBER,
        P_VAL5_NUMBER       IN  NUMBER
    ) IS   
            
    BEGIN
        UPDATE SP_MASTER
        SET VAL_TEXT     = P_VAL_TEXT,    
            VAL_BOOLIN   = P_VAL_BOOLIN,  
            VAL1_NUMBER  = P_VAL1_NUMBER, 
            VAL2_NUMBER  = P_VAL2_NUMBER, 
            VAL3_NUMBER  = P_VAL3_NUMBER, 
            VAL4_NUMBER  = P_VAL4_NUMBER, 
            VAL5_NUMBER  = P_VAL5_NUMBER
        WHERE   PRODUCT_NUMBER= P_PRODUCT_NUMBER    AND 
                FAMILY_CODE   = P_FAMILY_CODE       AND
                SEQ           = P_SEQ;
                
        UPDATE SP_PRODUCT
        SET FAMILY_CODE        = P_FAMILY_CODE,
            REG_DATE           = TO_CHAR(SYSDATE,'YYYYMMDD')
        WHERE PRODUCT_NUMBER   = P_PRODUCT_NUMBER;                
                
    EXCEPTION
        WHEN OTHERS THEN
            P_ERRFLAG := 'TRUE';   
            P_ERRMSG  := TO_CHAR(SQLCODE)||'-'||SQLERRM;
            P_ERRCODE := '-1021';            -- 저장시 오류가 발생하였습니다.    
    END; 

 

by 마농 [2016.11.04 14:38:54]

1번은 성공하고, 2번은 에러 난듯 하네요.
호출한 쪽에서 (p_errflag, p_errcode, p_errmsg) 의 값을 확인 후
확인 결과에 따라 Commit / Rollback 하는 것 아닌가요?
에러메시지 확인해 보세요.


by 서주형 [2016.11.04 17:24:03]

감사드립니다.

쿼리에 문제가 아니라 다른 프로세스의 문제였네요...

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입