Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

SQL Server Table-valued Functions

By admin on Março 11, 2021

Summary: neste tutorial, aprenderá como usar a função valorizada em tabelas do SQL Server, incluindo a função valorizada em tabelas em linha e as funções valorizadas por múltiplos estados.

O que é uma função valorizada em tabelas do SQL Server

Uma função valorizada em tabelas é uma função definida pelo utilizador que retorna dados de um tipo de tabela. O tipo de retorno de uma função valorizada em tabela é uma tabela, portanto, pode usar a função valorizada em tabela tal como usaria uma tabela.

Criar uma função valorizada em tabela

O seguinte exemplo de declaração cria uma função valorizada em tabela que retorna uma lista de produtos incluindo o nome do produto, ano do modelo e o preço da lista para um ano específico do modelo:

CREATE FUNCTION udfProductInYear ( @model_year INT)RETURNS TABLEASRETURN SELECT product_name, model_year, list_price FROM production.products WHERE model_year = @model_year;
Code language: SQL (Structured Query Language) (sql)

A sintaxe é semelhante à que cria uma função definida pelo utilizador.

O RETURNS TABLE especifica que a função irá retornar uma tabela. Como pode ver, não há nenhuma declaração BEGIN...END. A declaração simplesmente consulta dados do production.products tabela.

O udfProductInYear função aceita um parâmetro chamado @model_year do tipo INT. Devolve os produtos cujos anos de modelo são iguais @model_year parâmetro.

Após a função com valor de tabela ser criada, pode encontrá-la em Programabilidade > Funções > Funções com valor de tabela como mostra a figura seguinte:

ServidorSQL Exemplo de função valorizada em tabela

A função acima retorna o conjunto de resultados de uma única SELECT declaração, portanto, é também conhecida como uma função valorizada em tabela em linha.

Executar uma função valorizada em tabela

Para executar uma função valorizada em tabela, utiliza-se na instrução FROM cláusula da instrução SELECT:

SELECT * FROM udfProductInYear(2017);
Code language: SQL (Structured Query Language) (sql)
SQL Server Table-valued Function Execution

Neste exemplo, seleccionámos os produtos cujo ano modelo é 2017.

P>Pode também especificar que colunas devem ser devolvidas da função tabela-valorizada da seguinte forma:

SELECT product_name, list_priceFROM udfProductInYear(2018);
Code language: SQL (Structured Query Language) (sql)

Aqui é a saída parcial:

ServidorSQL Função com valor de tabela - Selecção de colunas

Modificar uma função com valor de tabela

Modificar uma função com valor de tabela, usa a palavra-chave ALTER em vez de CREATE. O resto do script é o mesmo.

Por exemplo, a seguinte declaração modifica o udfProductInYear alterando o parâmetro existente e adicionando mais um parâmetro:

ALTER FUNCTION udfProductInYear ( @start_year INT, @end_year INT)RETURNS TABLEASRETURN SELECT product_name, model_year, list_price FROM production.products WHERE model_year BETWEEN @start_year AND @end_year
Code language: SQL (Structured Query Language) (sql)

A função udfProductInYear devolve agora produtos cujo ano modelo entre um ano inicial e um ano final.

A seguinte declaração chama a função udfProductInYear para obter os produtos cujos anos modelo se encontram entre 2017 e :

SELECT product_name, model_year, list_priceFROM udfProductInYear(2017,2018)ORDER BY product_name;
Code language: SQL (Structured Query Language) (sql)

Aqui é a saída parcial:

ServidorSQL Função com valor de tabela Modificando

Multi-statement table-funções valorizadas (MSTVF)

Uma função valorizada em tabelas ou MSTVF é uma função valorizada em tabelas que retorna o resultado de múltiplas declarações.

A função avaliada em tabelas multi-estações é muito útil porque se pode executar múltiplas consultas dentro da função e agregar resultados na tabela retornada.

Para definir uma função avaliada em tabelas multi-estações, usa-se uma variável de tabela como valor de retorno. Dentro da função, executa-se uma ou mais consultas e inserem-se dados nesta variável da tabela.

O seguinte udfContacts() função combina funcionários e clientes numa única lista de contactos:

CREATE FUNCTION udfContacts() RETURNS @contacts TABLE ( first_name VARCHAR(50), last_name VARCHAR(50), email VARCHAR(255), phone VARCHAR(25), contact_type VARCHAR(20) )ASBEGIN INSERT INTO @contacts SELECT first_name, last_name, email, phone, 'Staff' FROM sales.staffs; INSERT INTO @contacts SELECT first_name, last_name, email, phone, 'Customer' FROM sales.customers; RETURN;END;
Code language: SQL (Structured Query Language) (sql)

A seguinte declaração ilustra como executar uma função avaliada em tabelas de declarações múltiplas udfContacts:

SELECT * FROM udfContacts();
Code language: SQL (Structured Query Language) (sql)

Output:

Quando usar funções avaliadas em tabela

Usamos tipicamente funções avaliadas em tabela como vistas parametrizadas. Em comparação com procedimentos armazenados, as funções valorizadas em tabela são mais flexíveis porque podemos usá-las onde quer que sejam usadas tabelas.

Neste tutorial, aprendeu sobre a função valorizada em tabela do SQL Server incluindo funções valorizadas em tabela em linha e funções valorizadas em tabela multi-estações.

Navegação de artigos

Brian Quinn não é casado! Não é uma namorada perfeita ou esposa por quem ele espera
Ar Condicionado de Conforto

Deixe uma resposta Cancelar resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Artigos recentes

  • Firebush (Português)
  • Previsão da taxa de CD para 2021: As taxas manter-se-ão provavelmente baixas, mas poderão aumentar mais tarde no ano
  • Como estruturar a documentação do sistema de gestão da qualidade
  • Dor pélvica crónica e prostatite: sintomas, diagnóstico e tratamento
  • Mixed Berry Crisp (Português)
  • Wheat Ales (Americana)
  • Os benefícios da amamentação após um ano
  • É seguro despejar café moído na pia | Canalização atómica
  • Cool-Down After Your Workout
  • Our Work

Meta

  • Iniciar sessão
  • Feed de entradas
  • Feed de comentários
  • WordPress.org

Arquivo

  • Março 2021
  • Fevereiro 2021
  • Janeiro 2021
  • Dezembro 2020
  • DeutschDeutsch
  • NederlandsNederlands
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • PolskiPolski
  • 日本語日本語
©2021 Info Cafe | WordPress Theme by SuperbThemes.com