특정 파티션 값을 조회하여 해당 파티션 정보로 테이블에 대한 쿼리를 만들려고 하고있습니다.
아래와 같이 쿼리를 작성 하였는데, 쿼리 동작이 안되네요 오류메시지는 아래처럼 나옵니다.
PartitionID 정보가 Int라 Convert로 변경하였습니다.
혹시 조치할 부분이 뭐가 있을까요.. 감이 안잡히네요..
오류정보
Must declare the table variable "@tblName".
쿼리내용
DECLARE @Partitionnnm NCHAR(10) =
(SELECT Convert(NCHAR(10),PartitionID) AS qname
FROM [SolarWindsOrionLog].[dbo].[OrionLog_LogEntry]
WHERE MessageDateTime >= DATEADD(MI,-560,GETDATE())
AND MessageDateTime < DATEADD(MI,-540,GETDATE())
Group by partitionid
)
DECLARE @tblName NCHAR(50) = N'OrionLog_LogEntryMessage_' + @Partitionnnm
DECLARE @query NVARCHAR(4000)
SET @query = N'SELECT * from @tblName';
EXEC sp_executesql @query
빈번하게 호출되는 동적 쿼리의 경우에는 sp_executesql를 통해 실행할때 파라미터를 설정하는 것이 좋습니다.
DECLARE @tblName NCHAR(50) = N'OrionLog_LogEntryMessage_' + @Partitionnnm
DECLARE @query NVARCHAR(4000)
DECLARE @param NVARCHAR(1000)
SET @query = N'SELECT * FROM @p_tblName';
SET @param = N'@p_tblName NCHAR(50)'
EXEC sp_executesql
@query
, @param
, @tblName