MSSQLSERVER_137
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
세부 정보
attribute | 값 |
---|---|
제품 이름 | SQL Server |
이벤트 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 AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20);
SET @mycol = 'Name';
EXECUTE ('SELECT @mycol FROM Production.Product;');
사용자 작업
스크립트의 다른 위치에서 사용되기 전에 SQL 스크립트에 사용되는 변수가 선언되었는지 확인합니다.
스크립트 외부에서 선언된 EXECUTE 문에서 변수를 참조하지 않도록 스크립트를 다시 작성합니다. 다음은 그 예입니다.
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20) ;
SET @mycol = 'Name';
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product;') ;
참고 항목
EXECUTE(Transact-SQL)
SET 문(Transact-SQL)
DECLARE @local_variable (Transact-SQL)