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.