Procedure 생성시 bind 변수 입력 관련 0 2 1,778

by 돌은물괴기 [SQL Query] [2014.03.05 14:26:06]


안녕하세요,
항상 많은 도움을 받고 있습니다.

특정테이블에 대한 INSERT 작업이 돌도록 Procedure를 생성하려고 합니다.

INSERT INTO HST_TMP
AS 
SELECT NO,NAME 
FROM HST PARTITION (P_HST_201402) S
 WHERE 1=1
 AND DATE BETWEEN TO_DATE('20140226000000','YYYYMMDDHH24MISS')
 AND TO_DATE('20140231235959','YYYYMMDDHH24MISS')

INSERT INTO HST_TMP
AS 
SELECT NO,NAME 
FROM HST PARTITION (P_HST_201403) S
 WHERE 1=1
 AND DATE BETWEEN TO_DATE('20140301000000','YYYYMMDDHH24MISS')
 AND TO_DATE('20140325235959','YYYYMMDDHH24MISS')

위의 년월 부분을 BIND 변수로 아래와 같이 지정하여 

YM1 = SELECT TO_CHAR(ADD_MONTH(SYSDATE,-1),'YYYYMM') FROM DUAL;
YM2 = SELECT TO_CHAR(ADD_MONTH(SYSDATE,0),'YYYYMM') FROM DUAL;

위 Procedure의 년월 부분에 변수를 적용하고 싶은데, 가능한지요?

구글링을 하고 있는데 답이 나오지가 않네요. ㅠㅜ

힌트나 조언 부탁 드립니다~



by 마농 [2014.03.05 15:22:06]
바인드 변수는 "값"에만 가능합니다. "명칭"에는 지정 불가능 합니다.
즉, 조건식의 비교값에는 사용 가능하지만
테이블명, 컬럼명, 파티션명 등에는 사용할 수 없습니다.

하지만 위에서 지정하신 파티션의 경우엔
따로 파티션을 지정하지 않아도 조건절에 의해 해당 파티션만을 읽게 될 것입니다.

또한 sysdate 를 사용할 것이라면 굳이 변수처리할 필요가 있을까요?
그냥 sysdate를 그대로 사용하시면 됩니다.

INSERT 구문에 AS 가 사용되던가요?
문법 확인해 보시구요.

by 돌은물괴기 [2014.03.06 14:22:16]
상세한 답변에 감사드립니다.
많은 도움이 되었습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입