CriandoBits
Identifique-se Entrar Esqueceu a senha? Esqueci minha senha

SQL Server - Função com valor de tabela complexa

Por Benedito Silva Júnior - publicado em 26/07/2016


As funções com valor de tabela com várias instruções combina a habilidade da função escalar de conter códigos complexos com a habilidade da função com valor de tabela de retornar um resultset.

Esse tipo de função cria uma variável do tipo Table e preenche a partir do código. Essa tabela é, então, passada de volta à função, de forma que possa ser usada em declarações SELECT.

Sintaxe:

    CREATE FUNCTION nome_da_função (parâmetros)
    RETURNS Table
    AS
        RETURN (declaração SELECT)

Exemplo:

CREATE FUNCTION multi_tabelas(@nome VARCHAR(30)) // função com parâmetro - recebe um nome RETURNS @valores Table // retorna uma tabela - objeto do tipo Table (nome VARCHAR(30), // estrutura da tabela soma_notas REAL, media REAL) AS BEGIN DECLARE // variáveis usadas nos cálculos @soma REAL, @media REAL // cálculos da soma e média das notas SELECT @soma = (nota1 * 2 + nota2 + nota3 + nota4) FROM notas_alunos WHERE nome = @nome SELECT @media = (nota1 * 2 + nota2 + nota3 + nota4)/5.00 FROM notas_alunos WHERE nome = @nome // preenche a tabela estruturada nesta função INSERT @valores(nome, soma_notas, media) // especifica os campos a seres preenchidos // especifica os valores e variáveis que preencherão os campos SELECT nt.nome, @soma, @media FROM notas_alunos AS nt WHERE nome = @nome // filtro - a condição é o nome passado por parâmetro RETURN END

Para chamar a função basta digitar:

SELECT * // especifica o nome do aluno do qual serão usadas as notas para os cálculos FROM multi_tabelas('nome')

A consulta acima retornará o nome, a soma e a média de suas suas.


 
VoltarTopo