(Oracle 11g) 프로시저 > INSERT ALL EXCEPTION이 나는데 도와주세요 0 6 1,600

by qriqri [PL/SQL] 프로시저 데이터베이스 오라클 [2014.10.02 09:37:40]



오라클 프로시저에서 멀티 인설트를 하려고 하면 이셉션이 계속나는데 무엇이 문제인가요?

디버깅을 하려고 해봤지만 그냥 저부분자체를 건너뛰어버리고 디버깅됩니다.

SQL로 INSERT ALL 테스트를 해봤을때는 문제가 없는데 PLSQL로 작성하고 테스트 했을떄는 계속 에러가 

나네요. 프로시저로 작업하는게 처음이라서 많이 벅차네요 도와주세요 ^^










BEGIN
        INSERT ALL

                   -- 첫번째 입력
                    INTO  TNMC_CREMATERESERVEINFO (
                             FAID                     
                        ,    RESERVEYMD                
                        ,    RESERVESEQ                
                        ,    RESERVENUM              
                        ,    COMPANY                  
                        ,    DEADYMD                 
                        ,    DEADTIME               
                        ,    REMARK                   
                        ,    RESERVETYPEDIVCD          
                        ,    RECEIVEPERSON              
                        ,    RECEIVEYMD                 
                        ,    RECEIVETIME                
                        ,    RESERVEMETHODCD           
                        ,    IPADDRESS                
                        ,    DEADPLACEDIVCD             
                        ,    DEADREASONDIVCD            
                        ,    BONEDIVCD                  
                        ,    APPLICANTDEADCONNECTCD    
                        ,    APPLICANTDEADCONNECTDESC    
                        ,    APPLICANTEMAIL            
                        ,    JURISDICTIONDIVCD          
                        ,    SMSAGREEYN                 
                        ,    FIRSTRESERVEYMD            
                        ,    FIRSTRESERVESEQ           
                        ,    FIRSTRESERVENUM          
                        ,    FIRSTRESERVEORDER         
                        ,    DEADSTATEDIVCD            
                        ,    APPLICANTSTATEDIVCD        
                        ,    DEADCONTACTNUM           
                        ,    APPLICANTCONTACTNUM        
                        ,    BIRTHMONTHS                
                        ,    PREVRESERVEYMD           
                        ,    PREVRESERVESEQ            
                        ,    PREVRESERVENUM             
                        ,    DEADINFOID                 
                        ,    JUMINNOYN                                         
                        ,    INSDIV                     
                        ,    CREATE_USER               
                        ,    CREATE_DATE                
                        ,    UPDATE_USER                
                        ,    UPDATE_DATE                
                         ,   BuryingYN                       
                         ,   DEADDOCUMENTNO       
                        ,    DEADDOCUEQUIPNM     
               ) VALUES (
                            P_FAID                         ,
                            P_RESERVEYMD                   ,
                            P_RESERVESEQ                   ,
                            V_RESERVENUM                   ,
                            P_COMPANY                      ,
                            P_DEADYMD                      ,
                            P_DEADTIME                     ,
                            P_REMARK                       ,
                            P_RESERVETYPEDIVCD             ,
                            P_RECEIVEPERSON                ,
                            TO_CHAR(SYSDATE,'YYYYMMDD')    ,
                            TO_CHAR(SYSDATE,'HH24MISS')    ,
                            'TMC0400001'                   ,
                            P_IPADDRESS                    ,
                            P_DEADPLACEDIVCD               ,
                            P_DEADREASONDIVCD              ,
                            P_BONEDIVCD                    ,
                            P_APPLICANTDEADCONNECTCD       ,   
                            P_APPLICANTDEADCONNECTDESC      ,   
                            P_APPLICANTEMAIL               ,    
                            P_JURISDICTIONDIVCD            ,    
                            P_SMSAGREEYN                   ,    
                            P_RESERVEYMD                   ,
                            P_RESERVESEQ                   ,
                            V_RESERVENUM                   ,
                            V_FIRSTRESERVEORDER            ,
                            P_DEADSTATEDIVCD               ,    
                            P_APPLICANTSTATEDIVCD          ,    
                            ''                             ,    
                            ''                             ,    
                            P_BIRTHMONTHS                  ,    
                            P_RESERVEYMD                   ,    
                            P_RESERVESEQ                   ,    
                            V_RESERVENUM                   ,    
                            P_DEADINFOID                   ,    
                            V_JUMINNOYN                    ,    
                            'I'                            ,
                            P_UPDATE_USER                  ,
                            SYSDATE                        ,
                            P_UPDATE_USER                  ,
                            SYSDATE                         ,
                            P_BURYINGYN                                     ,
                            SUBSTRB(P_DEADDOCUMENTNO,1,100)     ,         
                            SUBSTRB(P_DEADDOCUEQUIPNM,1,100)              
               )
                     -- 두번째 입력      
                     INTO  TNMC_CREMATERESERVEINFO (
                             FAID                       
                        ,    RESERVEYMD                 
                        ,    RESERVESEQ                  
                        ,    RESERVENUM                 
                        ,    COMPANY                    
                        ,    DEADYMD                    
                        ,    DEADTIME               
                        ,    REMARK                    
                        ,    RESERVETYPEDIVCD          
                        ,    RECEIVEPERSON           
                        ,    RECEIVEYMD                
                        ,    RECEIVETIME                
                        ,    RESERVEMETHODCD            
                        ,    IPADDRESS                  
                        ,    DEADPLACEDIVCD             
                        ,    DEADREASONDIVCD            
                        ,    BONEDIVCD                  
                        ,    APPLICANTDEADCONNECTCD     
                        ,    APPLICANTDEADCONNECTDESC    
                        ,    APPLICANTEMAIL             
                        ,    JURISDICTIONDIVCD          
                        ,    SMSAGREEYN                 
                        ,    FIRSTRESERVEYMD            
                        ,    FIRSTRESERVESEQ            
                        ,    FIRSTRESERVENUM            
                        ,    FIRSTRESERVEORDER          
                        ,    DEADSTATEDIVCD             
                        ,    APPLICANTSTATEDIVCD        
                        ,    DEADCONTACTNUM             
                        ,    APPLICANTCONTACTNUM        
                        ,    BIRTHMONTHS                
                        ,    PREVRESERVEYMD             
                        ,    PREVRESERVESEQ             
                        ,    PREVRESERVENUM             
                        ,    DEADINFOID                 
                        ,    JUMINNOYN                 
                        ,    SURVEYYN                   
                        ,    INSDIV                     
                        ,    CREATE_USER               
                        ,    CREATE_DATE                
                        ,    UPDATE_USER               
                        ,    UPDATE_DATE                
                        ,    BuryingYN                       
                        ,    RESERVEREFKEY             
                        ,    DEADDOCUMENTNO        
                        ,    DEADDOCUEQUIPNM       
               ) VALUES (
                            P_FAID                         ,
                            P_RESERVEYMD                   ,
                            P_RESERVESEQ                   ,
                            V_RESERVENUM                   ,
                            P_COMPANY                      ,
                            P_DEADYMD                      ,
                            P_DEADTIME                     ,
                            P_REMARK                       ,
                            P_RESERVETYPEDIVCD             ,
                            P_RECEIVEPERSON                ,
                            TO_CHAR(SYSDATE,'YYYYMMDD')    ,
                            TO_CHAR(SYSDATE,'HH24MISS')    ,
                            'TMC0400001'                   ,
                            P_IPADDRESS                    ,
                            P_DEADPLACEDIVCD               ,
                            P_DEADREASONDIVCD              ,
                            P_BONEDIVCD                    ,
                            P_APPLICANTDEADCONNECTCD       ,   
                            P_APPLICANTDEADCONNECTDESC      ,  
                            P_APPLICANTEMAIL               ,   
                            P_JURISDICTIONDIVCD            ,  
                            P_SMSAGREEYN                   ,   
                            P_RESERVEYMD                   ,
                            P_RESERVESEQ                   ,
                            V_RESERVENUM                   ,
                            V_FIRSTRESERVEORDER            ,
                            P_DEADSTATEDIVCD               ,   
                            P_APPLICANTSTATEDIVCD          ,   
                            ''                             ,   
                            ''                             ,   
                            P_BIRTHMONTHS                  ,  
                            P_RESERVEYMD                   ,   
                            P_RESERVESEQ                   ,   
                            V_RESERVENUM                   ,   
                            P_DEADINFOID                   ,   
                            V_JUMINNOYN                    ,   
                            P_SURVEYYN                     ,   
                            'I'                            ,
                            P_UPDATE_USER                  ,
                            SYSDATE                        ,
                            P_UPDATE_USER                  ,
                            SYSDATE                        ,
                            P_BURYINGYN                    ,
                            V_RESERVEREFKEY01              ,
                            SUBSTRB(P_DEADDOCUMENTNO,1,100)     ,       
                            SUBSTRB(P_DEADDOCUEQUIPNM,1,100)            
                         
                    )
                           SELECT * FROM DUAL;                  
                    
      EXCEPTION
           ROLLBACK;

          -- 예외상황 발생시 다시 INSERT 하는 로직이 들어있는 부분입니다.   

      END;

 

by 마농 [2014.10.02 09:50:53]

에러가 나요~ 하고 질문하시면 안되구요.

어떤 에러가 나는지 구체적으로 확인해 보셔야 합니다.

컴파일 에러인지? 실행 에러인지? 에러메시지는 뭔지?

일단 제 눈에 띄는것은 117 라인에 있는 마이너스(-) 가 눈에 띄네요.


by qriqri [2014.10.02 09:53:03]

아 컴파일시에는 에러가 나지 않구요 실행이 되긴하는데 이셉션이 나버립니다.

제가 프로시저를 작성하는게 처음이라서 혹시 에러메세지를 볼 수 있는 방법을 알려주실수 있으신가요

자바단에서 프로시저를 호출해서 쓰고 있습니다.

 

117번 라인의 주석을 지우다가 실수로 - 표시하나가 남은 것 같습니다. 수정했습니다.


by 마농 [2014.10.02 09:57:44]

Exception 은 에러를 잡는 구문입니다.

여기서 에러코드(SQLCODE)와 에러메시지(SQLERRM) 확인이 가능하구요.

다른 방법으로는 아예 Exception 절을 빼서 에러를 잡지 않으면 에러가 나버리겠지요.


by 최단경로 [2014.10.02 10:05:13]

안녕하세요..

지나가다 몇자 적어 봅니다.

테스트를 진행 하실때 일단 SQL*PLUS를 이용하여 테스트를 진행한 다음 실행하고자 하는 프로그램에 적용하시는 것이 좋을 듯 합니다 .

sqlplus> show error

하시면 에러 내용을 보실 수 있습니다.

ps..

dbms_output.put_line('SQLERR : ' || SQLERRM);

을 하시면 에러를 보실 수 있습니다.

 


by qriqri [2014.10.02 10:11:52]

#최단경로# 님

EXECUTE 프로시저명; 이런식으로 sqlplus 콘솔상에서 확인하라는 말씀이신가요?

 

 


by 최단경로 [2014.10.02 11:12:33]

@qriqri  네 맞습니다.

 

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