Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
12.1 – Functions
É um tipo de programa, criado no Servidor SQL Server, dentro de um database específico,
que tem como principal objetivo retornar um valor ou um conjunto de valores para um usuário ou
para outra função, para store procedure ou aplicação. São chamadas de User Defined
Functions(UDFs), ou simplesmente, função definida pelo usuário. Uma função definida pelo
usuário é uma rotina Transact-SQL ou CLR (Common Language Runtime) que aceita
parâmetros, executa uma ação, como um cálculo complexo, e retorna o resultado dessa ação
como um valor.
Cabe lembrar ainda, que funções definidas pelo usuário podem ser aninhadas, isto é, uma
função definida pelo usuário pode chamar outra. O nível de aninhamento é incrementado
quando a execução da função é iniciada, e reduzido quando a execução da função chamada é
concluída. Até 32 níveis de funções definidas pelo usuário podem ser aninhados. Se o máximo
de níveis de aninhamento for excedido haverá falha em toda a cadeia de funções da chamada
de aninhamento. Qualquer referência a um código gerenciado de uma função definida pelo
usuário do Transact-SQL é contada como um nível em relação ao limite de 32 níveis de
aninhamento. Os métodos invocados a partir do código gerenciado não são contados em
relação a esse limite.
1. Funções escalares;
2. Funções in-line: contêm apenas um comando SELECT para retornar os dados de uma
tabela;
SINTAXE:
A função seguinte tem como objetivo calcular a área de um triângulo mediante os valores
recebidos pelos parâmetros de entrada @base e @altura.
SELECT dbo.F_AreaTriangulo(5,30)
SELECT dbo.F_AreaTriangulo(3,17)
A função seguinte tem como objetivo calcular a área de uma circunferência mediante valores
recebido pelo parâmetros de entrada @raio.
Sintaxe:
Create FUNCTION [Proprietário_da_função].Nome_da_Função
([{@parametro [AS] datatype_escalar [=default ] } [,...n]])
RETURNS TABLE
[WITH <opção > [ [,] ...n]
[AS]
RETURN [ ( ] Comando SELECT [ ) ]
Exemplo:
Exemplo:
A tabela “Usuario” a seguir é utilizada no próximo exemplo.
CREATE TABLE [dbo].[Usuario](
[User_Name] [varchar](50) NULL,
[Num_Regiao] [int] NULL
)
Função:
A função seguinte obtém o código da região do usuário corrente da tabela Usuario apresentada
anteriormente e testa. Se o número da região for 10, significa que o usuário é o dbo (database
owner) e pode ler todos os dados da tabela Funcionário. Se não, o usuário corrente, que deve
existir na tabela Usuario, pode ler dados da tabela funcionario, mas apenas da região da qual
ele recebeu permissão por meio do Número da região. Se o usuário corrente não estiver na
tabela Usuario, a função retorna apenas as colunas da tabela Funcionario, mas sem valor
algum.
MACHADO, Felipe Nery Rodrigues. Projeto de banco de dados: uma visгo prбtica. -- 16 ed.
rev.e atual. -- Sгo Paulo: Йrica, 2009.
ROCHA, Ricardo. Bases de Dados 2005/2006. Parte VIII: Normalizaзгo. DCC - Faculdade de
Ciкncias da Universidade do Porto. Acessado em <18/02/2015>. Disponнvel em
<http://www.dcc.fc.up.pt/~ricroc/aulas/0506/bd/apontamentos/parteVIII.pdf>.