Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base 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)