안녕하세요..
아래와 같이 function 에서 if 문을 쓰려고 sSQL := 이 변수에 쿼릴를 담아 사용하려고 하는데
아래 소스에서 어떤 부분이 문제가 있는건지 모르겠네요... 컴파일이 안되는데...
sSQL := 변수에 쿼리를 담기 전에는 컴파일 되고 이상없는 것은 확인했습니다.
무엇이 문제 일까요??
CREATE OR REPLACE FUNCTION CO.SF_TW_ORDERITEM_TEST
(
iACCT_CODE IN VARCHAR2
,iBASE_DATE IN VARCHAR2 DEFAULT TO_CHAR(SYSDATE,'YYYYMMDD')
,iROOM_CODE IN VARCHAR2
,iITEM_CODE IN VARCHAR2
)
RETURN TTYPE_TW_ORDER AS
vFROM_DATE VARCHAR2(8);
vFROM_DATE2 VARCHAR2(8);
vROOM_CODE VARCHAR2(10);
v_tab TTYPE_TW_ORDER := TTYPE_TW_ORDER();
sSQL VARCHAR2(4000);
BEGIN
FOR cur IN (
sSQL := ' SELECT ';
sSQL := sSQL || ' '' '' AS ACCT_CODE ';
sSQL := sSQL || ' ,'' '' AS ORDR_DIV ';
sSQL := sSQL || ' ,'' '' AS ORDR_DATE ';
sSQL := sSQL || ' ,'' '' AS DELV_DATE ';
sSQL := sSQL || ' ,'' '' AS ITEM_CD ';
sSQL := sSQL || ' ,'' '' AS ORDR_QTY ';
sSQL := sSQL || ' ,'' '' AS ROOM_CODE ';
sSQL := sSQL || ' ,'' '' AS CUST_CODE ';
sSQL := sSQL || ' FROM DUAL ';
IF Length(iROOM_CODE) > 0 THEN
sSQL := sSQL || ' where room_code = ''N''';
ELSE
sSQL := sSQL || ' where room_code = ''Y''';
END IF;
)
LOOP
v_tab.extend;
v_tab(v_tab.last) := RTYPE_TW_ORDER(
cur.ACCT_CODE
,cur.ORDR_DIV
,cur.ORDR_DATE
,cur.DELV_DATE
,cur.ITEM_CD
,cur.ORDR_QTY
,cur.ROOM_CODE
,cur.CUST_CODE
);
END LOOP;
RETURN v_tab;
END SF_TW_ORDERITEM_TEST;
/
|