필드값을 테이블명의 일부로 사용할 수 있나요? 0 4 7,156

by 존커피 [SQL Query] [2012.09.16 17:54:21]


안녕하세요.

편안한 주말 보내고 계신가요 :)

궁금한 내용 질문 드립니다.

쿼리상에서 필드값을 테이블명의 일부로 사용할 수 있는지 알고 싶습니다.

회원 테이블에는 회원번호가 순서대로 1부터 시작해서 증가해서 값이 저장되고 있습니다.

거래 테이블은 거래_00 부터 거래_99 까지 나뉘어서 존재하고, 거래 테이블 뒤의 두자리는

회원번호의 뒷자리 두개를 의미합니다.

SELECT * FROM 거래_34  를 검색하기 위해서 문맥상은 맞지 않겠지만 이렇게 사용가능한지 알고싶습니다.

SELECT * FROM 거래_(SELECT SUBSTR(회원번호, -2) FROM 회원 WHERE 회원번호=1324)

다른 방식으로도 가능한 쿼리가 있는지 궁금합니다. 

편안한 주말 되세요!


by Oracler [2012.09.16 22:30:54]
위 쿼리문은 불가합니다. 왜냐하면 쿼리문을 파싱하는 시점에서 정확한 테이블 이름을 결정할 수가 없기 때문이지요. 즉 거래_00인지 거래_34인지 알 수가 없습니다.

쿼리문을 실행하는 시점에서 테이블, 뷰, 컬럼등의 이름을 동적으로 결정하려면 동적 SQL (Dynamic SQL)을 이용하여야 합니다. PL/SQL 블록에서 EXECUTE IMMEDIATE 를 이용해서 해결해야 합니다.

by 존커피 [2012.09.17 00:12:17]
Oracler 님 소중한 답변 감사드립니다. :D

by 마농 [2012.09.17 08:39:01]

1. 극히 제한적(1행1열의 스칼라자료검색용)이지만 사용방법이 있긴 합니다.
http://www.gurubee.net/article/55486

2. 설계단계라면 설계를 바꿔보세요.
테이블 하나에 고객번호로 파티션테이블을 만들어 보세요.


by 존커피 [2012.09.18 00:04:10]
마농 님 소중한 답변 감사드립니다.
많은 도움이 되었습니다 ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입