2014-12-13 2 views
1

@@ROWCOUNT과 같은 SQL Server 시스템 기능을 동적 문에서 사용할 수 있습니까? 동적 문 내에서 시스템 기능을 사용하는 TSQL

내가이 일을하려고했지만 실패했다 : 그것은 나에게 오류 '키워드'CONVERT '근처의 구문이 잘못되었습니다 "를 제공

USE NORTHWIND 

SELECT * FROM Customers 
EXEC ('SELECT ''RowCount is equal to ''' + CONVERT(varchar(10), @@ROWCOUNT)) 

.

답변

2

EXEC 전화를 걸 수는 있지만 직접 할 수는 없습니다. The grammar은 다음과 같습니다.

{ EXEC | EXECUTE } 
    ({ @string_variable | [ N ]'tsql_string' } [ + ...n ]) 
    [ AS { LOGIN | USER } = ' name ' ] 
[;] 

그래서 문자열 리터럴/변수 (및 매개 변수)와 + 운영자 이외의 허용하지 않습니다.

그래서 당신은 첫번째 다음 EXEC(@YourString)

DECLARE @Sql NVARCHAR(max); 

SELECT * 
FROM Customers; 

SET @Sql = 'SELECT ''RowCount is equal to ' + CONVERT(VARCHAR(10), @@ROWCOUNT) + ''''; 

EXEC (@Sql); 

문자열로을 연결해야하지만 어쨌든 여기에 동적 SQL이 필요하지 않습니다.

SELECT 'RowCount is equal to ' + CONVERT(varchar(10), @@ROWCOUNT) 

잘 작동합니다.

SELECT이있는 문과 행 개수를 검색하는 문 간에는 중간 문이 전혀 나타나지 않거나 다시 설정된다는 점에 유의하십시오.