저장프로시저에서 테이블명은 변수로 받아서 바로 쓰지 못한다.

동적 쿼리에서 몇가지 조건의 경우는 오류 메시지가 나는데,

테이블명을 동적으로 받아올때가 그 중 하나이다.

동적 쿼리를 사용하면 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

2009/08/01 10:27 2009/08/01 10:27

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다