Declarar e atribuir variáveis e sinônimos
No T-SQL, assim como em outras linguagens de programação, variáveis são objetos que permitem o armazenamento temporário de um valor para uso posterior. Você já encontrou variáveis quando as usou para passar valores de parâmetro para procedimentos armazenados e funções.
No T-SQL, as variáveis devem ser declaradas antes de serem usadas. Eles podem receber um valor ou serem inicializados quando forem declarados. Declarar uma variável inclui fornecer um nome e um tipo de dados, conforme mostrado abaixo. Para declarar uma variável, você deve usar a instrução DECLARE.
--Declare and initialize the variables.
DECLARE @numrows INT = 3, @catid INT = 2;
--Use variables to pass the parameters to the procedure.
EXEC Production.ProdsByCategory @numrows = @numrows, @catid = @catid;
GO
As variáveis devem ser declaradas no mesmo lote em que são referenciadas. Em outras palavras, todas as variáveis T-SQL são locais no escopo do lote, tanto em visibilidade quanto em tempo de vida. Somente outras instruções no mesmo lote podem ver uma variável declarada no lote. Uma variável é destruída automaticamente quando o lote termina.
Trabalhando com variáveis
Depois de declarar uma variável, você deve inicializá-la ou atribuí-la a um valor. Você pode fazer isso de três maneiras:
- No SQL Server 2008 ou posterior, você pode inicializar uma variável usando a instrução DECLARE.
- Em qualquer versão do SQL Server, você pode atribuir um único valor (escalar) usando a instrução SET.
- Em qualquer versão do SQL Server, você pode atribuir um valor a uma variável usando uma instrução SELECT. Verifique se a instrução SELECT retorna exatamente uma linha. Um resultado vazio deixará a variável com seu valor original; mais de um resultado retornará o último resultado.
O exemplo a seguir mostra as três maneiras de declarar e atribuir valores a variáveis:
DECLARE @var1 AS INT = 99;
DECLARE @var2 AS NVARCHAR(255);
SET @var2 = N'string';
DECLARE @var3 AS NVARCHAR(20);
SELECT @var3 = lastname FROM HR.Employees WHERE empid=1;
SELECT @var1 AS var1, @var2 AS var2, @var3 AS var3;
GO
Isso gera os seguintes resultados.
var1 | var2 | var3 |
---|---|---|
99 | cadeia de caracteres | Davis |
Dica
Para obter orientação completa sobre variáveis locais, consulte a documentação de referência do T-SQL.
Trabalhar com sinônimos
No SQL Server, os sinônimos fornecem um método para criar um link ou alias para um objeto armazenado no mesmo banco de dados ou até mesmo em outra instância do SQL Server. Os objetos que podem ter sinônimos definidos para eles incluem tabelas, exibições, procedimentos armazenados e funções definidas pelo usuário.
Sinônimos podem ser usados para fazer um objeto remoto parecer local ou fornecer um nome alternativo para um objeto local. Por exemplo, sinônimos podem ser usados para fornecer uma camada de abstração entre o código do cliente e os objetos de banco de dados reais usados pelo código. O código faz referência a objetos por seus aliases, independentemente do nome real do objeto.
Observação
Você pode criar um sinônimo que aponta para um objeto que ainda não existe. Isso é chamado de resolução de nomes adiados. O mecanismo do SQL Server não verificará a existência do objeto real até que o sinônimo seja usado em runtime.
Para gerenciar sinônimos, use os comandos DDL (linguagem de definição de dados) CREATE SYNONYM, ALTER SYNONYM e DROP SYNONYM, como no exemplo a seguir:
CREATE SYNONYM dbo.ProdsByCategory FOR TSQL.Production.ProdsByCategory;
GO
EXEC dbo.ProdsByCategory @numrows = 3, @catid = 2;
Para criar um sinônimo, você deve ter a permissão 'CREATE SYNONYM', bem como permissão para alterar o esquema no qual o sinônimo será armazenado.
Observação
Para criar um sinônimo, o usuário deve ter permissão CREATE SYNONYM e possuir ou ter permissão ALTER SCHEMA no esquema de destino.
Um sinônimo é um objeto "vazio" que é resolvido para o objeto de origem quando referenciado em runtime.