Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Comando SELECT para atribuir valores de variáveis

DECLARE @CPF VARCHAR(15);
DECLARE @DATA_NASCIMENTO DATE;
DECLARE @IDADE INT;

SET @CPF = '1471156710';
SELECT @DATA_NASCIMENTO = [DATA DE NASCIMENTO] FROM [TABELA DE CLIENTES] WHERE CPF = @CPF;
SET @IDADE = DATEDIFF(YEAR, @DATA_NASCIMENTO, GETDATE());

No exemplo acima informado para a resolução da questão, o código mostra o uso do comando SELECT para atribuir valor a uma variável, por meio de uma consulta em uma determinada tabela. Apesar de funcionar, não achei muito intuitivo o uso dessa forma e isso me deixou com dúvidas.

SELECT @DATA_NASCIMENTO = [DATA DE NASCIMENTO] FROM [TABELA DE CLIENTES] WHERE CPF = @CPF;

Por isso, testei outras formas e descobri que o formato abaixo também funciona. A meu ver, ficou mais claro de entender a sua aplicação:

SET @DATA_NASCIMENTO = (SELECT [DATA DE NASCIMENTO] FROM [TABELA DE CLIENTES] WHERE CPF = @CPF);

Em ambos os casos, eu inseri no final da instrução, o comando de PRINT para visualizar a saída do valor atribuído a variável @DATA_NASCIMENTO e assim constatar o seu valor, conforme o código abaixo. De fato essas sintaxes de atribuições funcionam e são bastante interessantes...

SET @CPF = '1471156710';
SET @DATA_NASCIMENTO = (SELECT [DATA DE NASCIMENTO] FROM [TABELA DE CLIENTES] WHERE CPF = @CPF);
SET @IDADE = DATEDIFF(YEAR, @DATA_NASCIMENTO, GETDATE());
PRINT @IDADE;
PRINT @DATA_NASCIMENTO;

E descobri que o formato abaixo também funciona:

SELECT @CPF = '1471156710';
SELECT @DATA_NASCIMENTO = (SELECT [DATA DE NASCIMENTO] FROM [TABELA DE CLIENTES] WHERE CPF = @CPF);
SELECT @IDADE = DATEDIFF(YEAR, @DATA_NASCIMENTO, GETDATE());
PRINT @IDADE;

Desculpem o tamanho do texto (rsrs), mas achei relevante apresentar essas situações.

2 respostas
solução!

Olá Érik, tudo bem?

Primeiramente, parabéns pela iniciativa de explorar diferentes formas de realizar a mesma tarefa.

A respeito da sua dúvida, tanto o comando SELECT quanto o SET podem ser usados para atribuir valores a variáveis no SQL Server. A diferença principal entre os dois é que o comando SET é usado para atribuir um valor a uma variável que já foi declarada, enquanto o SELECT pode ser usado para atribuir valores a uma ou mais variáveis e também retornar o resultado de um conjunto de valores. E a escolha entre ambas dependerá muito do contexto e da preferência pessoal. Ambos são ferramentas válidas e úteis no SQL Server.

Obrigada por compartilhar essa informação aqui no fórum, com certeza poderá enriquecer os conhecimentos de outros alunos.

Caso surja alguma dúvida, compartilhe no fórum.

Abraços e bons estudos!

Olá Monalisa, tudo ótimo!

Obrigado pelos esclarecimentos!