테이블을 변수로 치환하여 from절에 쓸 수 있을까요?? 0 2 2,883

by 장우람 [SQL Query] [2010.07.27 10:50:29]


음 간략히 말하자면..

a=0 일때

select *
  from aaa
를 하고

a=1일때

select *
  from bbb

를 하려고 합니다.

여기서 테이블들을

if p_작업구분 = '0' then
변_작업구분 = 'aaa'
else 변_작업구분 = 'bbb'
end if

select *
  from 변_작업구분

이런건 불가능 한건가요??(이해가 되셨는지...)
음.. 조건절이나 into절엔 변수치환되는건 당연한건데.. from절에도 쓸 수가 있는지...

만약 된다면 참 좋겠는데 말이죠.. 해봤는데 테이블 없다고 오류가 뜨네요..
저게 가능하지 않으면 이 프로시져는 아마 엄청 긴 프로시져가 될꺼라서요..

혹시 안된다면 다른 방법이 있는지요??
by 마농 [2010.07.27 10:56:39]
변수를 테이블명으로 인식시킬수는 없습니다.

아예 쿼리를 통째로 문자형 변수에 동적으로 구성하셔서 실행하는 방법을 사용하시면 됩니다.

동적 쿼리가 아닌 정적 쿼리로 해결하고자 한다면?
Union all을 이용하시면 될듯 하네요.
SELECT *
FROM
(
SELECT '0' gubun, aaa.* FROM aaa
UNION ALL
SELECT '1' gubun, bbb.* FROM bbb
)
WHERE gubun = p_작업구분
;

by proud [2010.07.27 10:57:42]
가능합니다.

저의 경우 툴보다 sqlplus 를 주로 쓰기에 column의 new_value를 이용하여 위의 경우를 해결 할 듯 합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입