질문드립니다... 0 2 1,205

by 광훨 [PL/SQL] [2013.11.29 16:26:01]


VAR RC REFCURSOR;
declare
	V_A VARCHAR2(10) := 'AAA';
	V_B VARCHAR2(10000);
BEGIN
	V_B := 'WITH T ( AA , BB , CC ) AS (
	SELECT ''1'' ,''AAA'' ,''100'' FROM DUAL UNION ALL
	SELECT ''2'' ,''BBB'' ,''200'' FROM DUAL UNION ALL
	SELECT ''3'' ,''CCC'' ,''300'' FROM DUAL UNION ALL
	SELECT ''4'' ,''DDD'' ,''400'' FROM DUAL UNION ALL
	SELECT ''5'' ,''EEE'' ,''500'' FROM DUAL UNION ALL
	SELECT ''6'' ,''FFF'' ,''600'' FROM DUAL UNION ALL
	SELECT ''7'' ,''GGG'' ,''700'' FROM DUAL UNION ALL
	SELECT ''8'' ,''HHH'' ,''800'' FROM DUAL
	)
	SELECT AA, BB, CC FROM T
	WHERE BB IN (''' || V_A || ''')
	';
	OPEN :RC FOR V_B;
END;
에서 V_A안에 한가지 값만 넣으면 아무 문제 없이 돌아가는데, 여러개의 값을 넣으면 오류가 나네요.

다중의 결과를 원할 경우, 다른 방법을 써야하는건가요?

조건에 'AAA'와 'CCC'와 'EEE'를 가진 값을 출력하고 싶은데...
by 마농 [2013.11.29 16:39:17]
V_A 값을 어떻게 주는가에 따라 코딩이 달라져야겠지요.
V_A := 'AAA'', ''CCC'', ''EEE';  ===>  IN (''' || V_A || ''')
V_A := '''AAA'', ''CCC'', ''EEE'''  ===> IN (' || V_A || ')
V_A := 'AAA, CCC, EEE';  ===>  IN (''' || REPLACE(V_A, ', ', ''', ''') || ''')

by 광훨 [2013.11.29 17:00:41]
아.... 콤마도 전부 씌워줘야했군요...
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입