Partilhar via


MSSQLSERVER_137

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Detalhes

Attribute 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 Deve declarar a variável escalar "%.*ls".

Explanation

Este erro ocorre quando uma variável é usada num script SQL sem primeiro declarar a variável. O exemplo seguinte devolve o erro 137 tanto para as instruções SET como SELECT porque @mycol não está declarado.

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

Uma das causas mais complexas deste erro inclui o uso de uma variável declarada fora da instrução EXECUT. Por exemplo, a variável @mycol especificada na instrução SELECT é local à instrução SELECT; assim, está fora da instrução EXECUTAR.

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

Ação do Usuário

Verifique se quaisquer variáveis usadas num script SQL estão declaradas antes de serem usadas noutro local do script.

Reescreva o script para que não faça referência a variáveis na instrução EXECUTE que são declaradas fora dele. Por exemplo:

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

Ver também

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