Buscar

Funções em Oracle PL/SQL

Prévia do material em texto

Aula de Funções (ORACLE): 
FUNÇÕES
Uma função é semelhante a um procedimento. Também aceita argumentos. 
É uma forma diferente de bloco PL/SQL. A diferença é que uma função é chamada como parte de uma execução.
===========================================================
Criando uma Função:
CREATE OR REPLACE FUNCTION nome-da-função (nome-parametro IN tipoparametro)
RETURN tipo_de_retorno
AS
[declaração de variaveis]
BEGIN
...
..
....
...
END;
Exemplo 1: Função que calcula o dobro de um número.
 Create Function CalcDobro (p1 in number) return number 
 as
 p2 number;
 BEGIN
 p2 := p1* 2;
 Return p2;
 END;
Como ativar a função:
Insert into medico values (1,’dr. João Marcos’,CalcDobro(50));
Ou
SELECT nomemedico, CalcDobro(VrHonor) from medico;
Exemplo2: Função que devolve a descrição de um produto
Create or replace function fn_devolve_descricao(pcodprod produto.cod_produto%type)
Return varchar2
As
Vdesc produto.descricao%type;
Begin
 Select descricao into vdesc
 From produto
 Where produto.cod_produto = pcodprod;
 Return (vdesc);
End fn_devolve_descricao;
Para evocar uma função:
1a. Forma:
Select num_pedido, cod_produto, FN_devolve_descricao(cod_produto)
From item_pedido;
2a. Forma
variable resultado varchar2(20)
execute :resultado := fn_devolve_descricao (3);
print :resultado
3ª forma: formatando a saída:
select cod_produto, Substr(Fn_devolve_descricao(cod_produto),1,15) as descricao from item_pedido
Exercícios:
1- Escreva uma função Ver_hora que receba como parâmetro uma data no formato dd/mm/yyyy e devolva-a no formato dd-mm-yyyy:HH24:mi:ss.
2- Escreva uma função que receba como parâmetro um código de Paciente (modelo Paciente-Consulta) e devolva “IDOSO” se o paciente tiver mais de 65 anos. Caso contrário devolva “NÃO IDOSO”.
3- Crie uma função Chamada Consulta_estoque que retorna a qtde corrente em estoque de determinado produto.
a- Passe para a função o código do produto
b- Crie o campo QTDE_estoque na tabela de produto.
c- Crie uma forma de executar a função criada.
4- Escreva uma função que receba como parâmetro um numero de telefone não formatado( só números) e exiba este número no formato
(xx)xxxx-xxxx
 5- Escreva uma função que receba como parâmetro o código do cliente e conte quantos pedidos ele tem.
Se ele tiver mais de 3 pedidos devolver mensagem:
 'Cliente preferencial' concatenado com o código e nome do cliente.
Se tiver entre 1 e 3 devolver mensagem 'Cliente Normal' 
 concatenado com o código e nome do cliente
Se não tiver pedidos 'Cliente Inativo' 
 concatenado com o código e nome do cliente;
Testar se o cliente existe, caso contrário emitir mensagem de erro.

Continue navegando