OPENROWSET 쿼리의 변수 대체
이 쿼리는 변수(@ID)를 OPENROWSET 문에 동적으로 포함하려고 할 때 오류가 발생합니다.
SELECT * FROM OPENROWSET( 'SQLNCLI', 'DRIVER={SQL Server};', 'EXEC dbo.sProc1 @ID = ' + @id )
오류 메시지는 ' ' 근처의 잘못된 구문을 나타내며 강조 표시됩니다. 문자열을 변수와 연결하려는 시도.
오류가 발생하는 이유
OPENROWSET에서는 직접 변수 대체를 허용하지 않습니다. 공급자에게 전달된 문자열 인수는 그대로 평가되어 변수 평가 및 포함을 방지합니다.
해결책: 동적 SQL
OPENROWSET 쿼리에 변수를 포함하려면 다음을 수행해야 합니다. 동적 SQL 기술 사용:
예는 다음과 같습니다.
Declare @ID int Declare @sql nvarchar(max) Set @ID=1 Set @sql='SELECT * FROM OPENROWSET( ''SQLNCLI'', ''DRIVER={SQL Server};'', ''EXEC dbo.usp_SO @ID =' + convert(varchar(10),@ID) + ''')' -- Print @sql Exec(@sql)
동적 SQL을 사용하면 런타임에 공급자 문자열을 구성하고 변수를 동적으로 포함할 수 있습니다. 가치가 있습니다.
위 내용은 OPENROWSET 쿼리에서 변수 대체를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!