MSSQLSERVER_137
세부 정보
제품 이름 |
SQL Server |
제품 버전 |
10.0 |
제품 빌드 번호 |
|
이벤트 ID |
137 |
이벤트 원본 |
MSSQLSERVER |
구성 요소 |
SQLEngine |
심볼 이름 |
P_SCALAR_VAR_NOTFOUND |
메시지 텍스트 |
스칼라 변수 "%.*ls"을(를) 선언해야 합니다. |
설명
이 오류는 SQL 스크립트에서 변수를 먼저 선언하지 않고 사용하는 경우에 발생합니다. 다음 예에서는 @mycol이 선언되지 않았으므로 SET 및 SELECT 문에 대해 오류 137이 반환됩니다.
SET @mycol = 'ContactName';
SELECT @mycol;
이 오류의 좀 더 복잡한 원인 중 하나로 EXECUTE 문 외부에서 선언된 변수를 사용하는 경우가 있습니다. 예를 들어 SELECT 문에 지정된 @mycol 변수는 SELECT 문에서 로컬로 사용되므로 EXECUTE 문 외부에 있습니다.
USE AdventureWorks;
GO
DECLARE @mycol nvarchar(20);
SET @mycol = 'Name';
EXECUTE ('SELECT @mycol FROM Production.Product;');
사용자 동작
SQL 스크립트에서 변수를 사용하기 전에 해당 변수를 선언했는지 확인하십시오.
EXECUTE 문 외부에서 선언된 변수를 참조하지 않도록 스크립트를 다시 작성하십시오. 예를 들면 다음과 같습니다.
USE AdventureWorks;
GO
DECLARE @mycol nvarchar(20) ;
SET @mycol = 'Name';
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product';) ;