Articles

SQLShack (Português)

Posted by admin

SQL Server fornece-nos dois métodos em T-SQL para atribuir um valor a uma variável SQL local previamente criada. O primeiro método é a declaração SET, a declaração padrão ANSI que é comumente usada para a atribuição de valor variável. A segunda instrução é a instrução SELECT., Além de seu uso principal para formar a lógica que é usada para recuperar dados de um banco de dados de tabela ou de várias tabelas no SQL Server, a instrução SELECT pode também ser usado para atribuir um valor a uma variável local diretamente ou a partir de uma variável, vista ou tabela.

embora ambas as declarações T-SQL cumpram a tarefa de atribuição de valor variável SQL, há um número de diferenças entre o conjunto e a seleção de declarações que podem levá-lo a escolher um deles em circunstâncias específicas, sobre o outro., Neste artigo, vamos descrever, em detalhe, quando e por que escolher entre o conjunto e selecionar as declarações T-SQL ao atribuir um valor a uma variável.

vamos começar com a criação de uma nova tabela e preenchê-la com poucos registros para a nossa demo.,d utilizando a seguinte instrução SELECT:

1
SELECT * FROM SetVsSelectDemo

E os dados serão mostrados como abaixo:

Se conseguirmos atribuir um valor escalar para a variável SQL que é previamente definido usando a instrução DECLARE, tanto o CONJUNTO e instruções SELECT irá atingir o alvo no mesmo caminho.,c47f9″>

1
2
3
4

DECLARE @EmpName2 NVARCHAR(50)
SELECT @EmpName2 = ‘Ali’
IMPRIMIR @EmpName2
IR

Os valores atribuídos para as variáveis em consultas anteriores será impresso na guia Mensagens, como mostrado abaixo:

o SQL Server permite-nos atribuir o valor para uma variável SQL a partir de um banco de dados de tabela ou modo de exibição.,

3
4
DECLARE @EmpName NVARCHAR(50)
SELECT @EmpName = a PARTIR de SetVsSelectDemo ONDE GroupNumber = 3
IMPRIMIR @EmpName
IR

Os resultados de duas consultas anteriores será exibido na guia Mensagens, como mostrado abaixo:

Até este ponto, você pode ver que tanto o CONJUNTO e instruções SELECT pode executar o valor da variável de atribuição de tarefas de forma idêntica e diferentes do código lado só.,

múltiplas variáveis SQL

assumir que precisamos atribuir valores a múltiplas variáveis de uma só vez. A declaração SET pode atribuir valor a uma variável de cada vez; isto significa que, se precisamos atribuir valores para duas variáveis, precisamos escrever duas declarações SET. No exemplo abaixo, cada variável necessita de um conjunto separado para atribuir-lhe valor escalar, antes de imprimi-lo:

Por outro lado, a instrução SELECT pode ser usada para atribuir valores às múltiplas variáveis SQL previamente definidas usando uma instrução SELECT., Abaixo instrução SELECT pode ser facilmente usado para atribuir valores escalares para as duas variáveis, utilizando uma instrução SELECT antes de imprimi-lo:

Você pode ver o resultado impresso abaixo, que ambas as afirmações se obter a mesma tarefa, com a instrução SELECT melhor do que a instrução SET quando tentar atribuir valores a variáveis múltiplas, devido à simplicidade de código:

Novamente, se tentarmos atribuir valores a partir de tabela de banco de dados para várias variáveis, ele exige de nós CONJUNTO de instruções igual ao número de variáveis.,o @EmpName e @EmpGrade variáveis, como mostrado no script abaixo:

por outro lado, apenas uma instrução SELECT pode ser usado para atribuir valores a partir do SetVsSelectDemo tabela para o @EmpName e @EmpGrade SQL variáveis, usando o mais simples de consulta, como mostrado claramente abaixo:

é óbvio a partir de duas consultas anteriores de que a consulta que está usando a instrução SELECT é mais eficiente do que a utilização do CONJUNTO de instrução, quando a atribuição de valores a várias variáveis ao mesmo tempo, devido ao fato de que, do CONJUNTO de instrução só pode atribuir uma variável de cada vez., Semelhantes resultados de duas consultas anteriores que são impressos na guia Mensagens, será como a abaixo, no nosso caso:

Vários valores

O segundo ponto, qual a diferença entre a atribuição de valores para o SQL variáveis usando as instruções SELECT ou SET aparece, é quando o conjunto de resultado de consulta subconsulta que é usado para atribuir um valor a uma variável retorna mais de um valor., Neste caso, a instrução SET retornará um erro que aceita apenas um valor escalar da subconsulta para atribuí-lo à variável, enquanto que a instrução SELECT aceita essa situação, em que a subconsulta será retornar vários valores, sem levantar qualquer erro. Você não terá nenhum controle sobre qual valor será atribuído à variável, onde o último valor retornado da subquery será atribuído à variável.

assuma que precisamos atribuir o valor do nome do segundo grupo a partir da tabela SetVsSelectDemo criada anteriormente para a variável @EmpName SQL., De recordar que o segundo grupo em que a tabela contém dois registros no conjunto de resultados como mostrado abaixo:

O script que é usado para atribuir o @EmpName valor da variável de SetVsSelectDemo tabela usando o CONJUNTO e instruções SELECT vai ser assim:

Devido ao fato de que, a instrução de subconsulta retornou dois registros, atribuindo um valor para o @EmpName variável SQL usando a instrução SET vai falhar, como o CONJUNTO de instrução pode atribuir apenas um valor único para as variáveis.,l a ter sucesso com nenhum erro, atribuindo o nome do segundo registro retornado, que é “Zaid”, para a variável, como mostrado no resultado mensagens abaixo:

Nós podemos aprender a partir do resultado anterior que, quando você espera que a subconsulta será retornar mais de um valor, é melhor usar a instrução SET para atribuir valor à variável mediante a implementação de um adequado mecanismo de tratamento de erro, em vez de utilizar a instrução SELECT que irá atribuir o último valor retornado para a variável SQL, com nenhum erro retornado para nos avisar que a subconsulta devolveu vários valores.,

não atribuir nenhum valor

outra diferença entre atribuir valores às variáveis SQL usando o conjunto e selecionar declarações, é quando a sub-pesquisa que é usada para atribuir um valor à variável return nenhum valor. Se a variável anteriormente declarada não tiver valor inicial, tanto a declaração SET como SELECT agirão da mesma forma, atribuindo valor nulo a essa variável.

assumir que precisamos atribuir a variável @EmpName, sem valor inicial, o nome do quinto grupo da tabela SetVsSelectDemo.,lectDemo ONDE GroupNumber = 5

SELECT @EmpName COMO SELECT_Name
IR

não Ter valor inicial para o @EmpName variável, e não o valor retornado da subconsulta, um valor NULL será atribuído à variável em ambos os casos, como demonstrado claramente na mensagem com o resultado abaixo:

Se anteriormente declarado SQL variável tem um valor inicial, e a subconsulta que é usado para atribuir um valor a uma variável não retorna nenhum valor, o CONJUNTO e a instrução SELECT irá se comportar de maneiras diferentes., Neste caso, a declaração de conjunto irá sobrepor o valor inicial da variável e devolver o valor nulo. Pelo contrário, a instrução SELECT não irá sobrepor o valor inicial da variável e irá devolvê-la, se nenhum valor for devolvido da subquery de atribuição.,script abaixo:

Levando em consideração que a atribuição de subconsulta reajustado nenhum valor, a consulta usada a instrução SET para atribuir valor à variável SQL irá substituir o valor inicial da variável, retornando o valor NULO, enquanto que a consulta usada a instrução SELECT para atribuir valor à variável irá manter o valor inicial sem alterar como nenhum valor é retornado da subconsulta, como mostrado claramente os resultados abaixo:

Conclusão

o SQL Server fornece-nos dois métodos principais são utilizados para atribuir valores para o SQL variáveis., Na maioria dos casos, tanto as declarações SET quanto seleta cumprem a tarefa de atribuição de valor variável sem problemas.,valor da subconsulta para a variável, com controle do seu lado

  • Se a atribuição de subconsulta não retorna nenhum valor, a instrução SET irá substituir a variável valor inicial NULO, enquanto a instrução SELECT não vai substituir o seu valor inicial
    • Autor
    • Posts Recentes
    Ahmad Yaseen é um Microsoft Big Data engenheiro com profundo conhecimento e experiência em SQL BI, Banco de dados SQL Server de Administração e Desenvolvimento de campos., he is a Microsoft Certified Solution Expert in Data Management and Analytics, Microsoft Certified Solution Associate in SQL Database Administration and Development, Azure Developer Associate and Microsoft Certified Trainer.
    Também, ele está contribuindo com suas dicas de SQL em muitos blogs.,
    Ver todos os posts por Ahmad Yaseen

    posts mais Recentes por Ahmad Yaseen (ver todas)
    • Como monitor Azure Dados de Fábrica – em 15 de janeiro de 2021
    • Usando o Controle de Origem no Azure Dados de Fábrica de 12 de janeiro, 2021
    • Usando Modelos no Azure Dados de Fábrica, 8 de janeiro de 2021

    Leave A Comment