dynamic sql 작업시 파라미터 사용위치??? 0 2 1,528

by sun [PL/SQL] [2017.03.10 21:07:16]


급해서 질문 먼저 드립니다..

아래와 같은 프로시져 스크립트가 잇는데요..

 

IF PI_ATTR_GB = 'CODE' THEN   
              V_SQL := 'SELECT ATTR'||PI_ATTR_NUM||' FROM CO_COM_BRANCH_CMMN WHERE BRANCH_CD  =  :1 AND CLS_CD = :2 AND CMMN_CD = :3 AND USE_YN    = :4';
           ELSE --'NAME'
              V_SQL := 'SELECT ATTR'||PI_ATTR_NUM||'_DC FROM CO_COM_BRANCH_CMMN WHERE BRANCH_CD  =  :1 AND CLS_CD = :2 AND CMMN_CD = :3 AND USE_YN = :4';
           END IF ;
          
           EXECUTE IMMEDIATE V_SQL INTO V_ATTR USING PI_BRANCH_CD,PI_CLS_CD,PI_CMMN_CD,'Y';

 

빨강색도 파라미터이고 파란색도 파라미터인데요..

위치를 어떻게 써야 할까요..

' : ' 은  where절 이후에만 써야 하나요.. ?

아님 파란색 자리에 PI_ATTR_NUM 처럼 써도 되나요?

아래와 같이요..

 V_SQL := 'SELECT ATTR'||PI_ATTR_NUM||' FROM CO_COM_BRANCH_CMMN WHERE BRANCH_CD  = '||pi_branch_cd|| ' AND CLS_CD = :2

궁금한건 언제 : 를 써야 하고 언제 파라미터를 써야하는지.. 궁금해서요..

다이나믹쿼리를 작성하고 있는데.. having 부분에도 조건에 따라 변경되어야 할 부분이 있고 한데..

답변 부탁드립니다.. 급해서요..

 

 

 

                    

by 마농 [2017.03.10 23:59:50]

일반적인 경우 파란색 바인드 변수 형태를 추천합니다.

다만 값이 아닌 컬럼명 등은 파란색처럼 변수처리가 불가하므로 빨간색처럼 사용할 수밖에 없습니다.


by sun [2017.03.11 00:51:36]

늦은시간까지 확인 감사드립니다.

 

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