Skip to content

Latest commit

 

History

History
68 lines (47 loc) · 2.09 KB

File metadata and controls

68 lines (47 loc) · 2.09 KB
title MSSQLSERVER_137 | Microsoft Docs
ms.custom
ms.date 03/06/2017
ms.prod sql-server-2014
ms.reviewer
ms.technology supportability
ms.topic conceptual
helpviewer_keywords
137 (Database Engine error)
ms.assetid 47fb4212-2165-4fec-bc41-6d548465d7be
author MashaMSFT
ms.author mathoma
manager craigg

MSSQLSERVER_137

Details

Product Name SQL Server
Event ID 137
Event Source MSSQLSERVER
Component SQLEngine
Symbolic Name P_SCALAR_VAR_NOTFOUND
Message Text Must declare the scalar variable "%.*ls".

Explanation

This error occurs when a variable is used in a SQL script without first declaring the variable. The following example returns error 137 for both the SET and SELECT statements because @mycol is not declared.

SET @mycol = 'ContactName';

SELECT @mycol;

One of the more complicated causes of this error includes the use of a variable that is declared outside the EXECUTE statement. 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;

GO

DECLARE @mycol nvarchar(20);

SET @mycol = 'Name';

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

User Action

Verify that any variables used in a SQL script are declared before being used elsewhere in the script.

Rewrite the script so that it does not reference variables in the EXECUTE statement that are declared outside of it. For example:

USE AdventureWorks2012;

GO

DECLARE @mycol nvarchar(20) ;

SET @mycol = 'Name';

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

See Also

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