저장프로시저에서 테이블명은 변수로 받아서 바로 쓰지 못한다.
동적 쿼리에서 몇가지 조건의 경우는 오류 메시지가 나는데,
테이블명을 동적으로 받아올때가 그 중 하나이다.
동적 쿼리를 사용하면 DBMS가 미리 실행 계획을 준비해놓기 힘들기 때문에 작업 효율에 문제가 생기므로 일반적인 경우는 동적 쿼리를 자제하는 것이 좋다.
몇가지 관리 목적에서 동적 쿼리를 사용해야만 한다면, sp_executesql 를 사용하면 된다.
ex)
CREATE PROC test
@게시판 VARCHAR(128)
AS
DECLARE @sql NVARCHAR(512)
SET @sql = 'SELECT * '
SET @sql = @sql + ' FROM ' + @게시판
SET @sql = @sql + ' ORDER BY idx DESC '
EXEC sp_executesql @sql
GO