MSSQLSERVER_137MSSQLSERVER_137

이 항목 적용 대상: 예SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

세부 정보Details

제품 이름Product Name SQL ServerSQL Server
이벤트 IDEvent ID 137137
이벤트 원본Event Source MSSQLSERVERMSSQLSERVER
구성 요소Component SQLEngineSQLEngine
심볼 이름Symbolic Name P_SCALAR_VAR_NOTFOUNDP_SCALAR_VAR_NOTFOUND
메시지 텍스트Message Text 스칼라 변수 "%.ls"을(를) 선언해야 합니다.Must declare the scalar variable "%.ls".

설명Explanation

이 오류는 SQL 스크립트에서 변수를 먼저 선언하지 않고 사용하는 경우에 발생합니다.This error occurs when a variable is used in a SQL script without first declaring the variable. 다음 예제에서는 @mycol이 선언되지 않았으므로 SET 및 SELECT 문에 대해 오류 137이 반환됩니다.The following example returns error 137 for both the SET and SELECT statements because @mycol is not declared.

SET @mycol = 'ContactName';SET @mycol = 'ContactName';

SELECT @mycol;SELECT @mycol;

이 오류의 좀 더 복잡한 원인 중 하나로 EXECUTE 문 외부에서 선언된 변수를 사용하는 경우가 있습니다.One of the more complicated causes of this error includes the use of a variable that is declared outside the EXECUTE statement. 예를 들어 SELECT 문에 지정된 @mycol 변수는 SELECT 문에서 로컬로 사용되므로 EXECUTE 문 외부에 있습니다.For example, the variable @mycol specified in the SELECT statement is local to the SELECT statement; thus it is outside the EXECUTE statement.

USE AdventureWorks2012;USE AdventureWorks2012;

GOGO

DECLARE @mycol nvarchar(20);DECLARE @mycol nvarchar(20);

SET @mycol = 'Name';SET @mycol = 'Name';

EXECUTE ('SELECT @mycol FROM Production.Product;');EXECUTE ('SELECT @mycol FROM Production.Product;');

사용자 동작User Action

SQL 스크립트에서 변수를 사용하기 전에 해당 변수를 선언했는지 확인하십시오.Verify that any variables used in a SQL script are declared before being used elsewhere in the script.

EXECUTE 문 외부에서 선언된 변수를 참조하지 않도록 스크립트를 다시 작성하십시오.Rewrite the script so that it does not reference variables in the EXECUTE statement that are declared outside of it. 예를 들어For example:

USE AdventureWorks2012;USE AdventureWorks2012;

GOGO

DECLARE @mycol nvarchar(20) ;DECLARE @mycol nvarchar(20) ;

SET @mycol = 'Name';SET @mycol = 'Name';

EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product';) ;EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product';) ;

참고 항목See Also

EXECUTE(Transact-SQL)EXECUTE (Transact-SQL)
SET 문(Transact-SQL)SET Statements (Transact-SQL)
DECLARE @local_variable(Transact-SQL)DECLARE @local_variable (Transact-SQL)