Partilhar via


MSSQLSERVER_137

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Detalhes

Atributo Valor
Nome do produto SQL Server
ID do evento 137
Origem do Evento MSSQLSERVER
Componente SQLEngine
Nome simbólico P_SCALAR_VAR_NOTFOUND
Texto da mensagem É necessário declarar a variável escalar "%.*ls".

Explicação

Esse erro ocorre quando uma variável é usada em um script SQL sem primeiro declarar a variável. O exemplo a seguir retorna o erro 137 para as instruções SET e SELECT porque @mycol não é declarado.

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

Uma das causas mais complexas desse erro inclui o uso de uma variável que é declarada fora da instrução EXECUTE. Por exemplo, a variável @mycol especificada na instrução SELECT é local para a instrução SELECT; portanto, está fora da instrução EXECUTE.

USE AdventureWorks2022;  
  
GO  
  
DECLARE @mycol nvarchar(20);  
  
SET @mycol = 'Name';  
  
EXECUTE ('SELECT @mycol FROM Production.Product;'); 

Ação do usuário

Verifique se alguma das variáveis usadas em um script SQL foi declarada antes de ser usada em outro lugar no script.

Reescreva o script de modo que ele não faça referência a variáveis na instrução EXECUTE que estejam declaradas fora dela. Por exemplo:

USE AdventureWorks2022;  
  
GO  
  
DECLARE @mycol nvarchar(20) ;  
  
SET @mycol = 'Name';  
  
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product;') ;

Confira também

EXECUTE (Transact-SQL)
Instruções SET (Transact-SQL)
DECLARE @local_variable (Transact-SQL)