Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do
AzureInstância
Gerenciada de SQL do AzureBanco de dados SQL no Microsoft Fabric
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)