0% acharam este documento útil (0 voto)
4 visualizações8 páginas

PL/SQL: Funções, Procedimentos e Triggers

Enviado por

dout
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
4 visualizações8 páginas

PL/SQL: Funções, Procedimentos e Triggers

Enviado por

dout
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Resumo de PL/SQL: Functions, Procedures, Triggers, CRUD e Packages

1. Functions (Funções)

Definição:

Uma função (Function) é um bloco de código PL/SQL que realiza uma tarefa específica e retorna um valor único. As

funções podem ser usadas em consultas SQL, procedimentos e outros blocos PL/SQL.

Características:

- Sempre retornam um valor usando a palavra-chave RETURN.

- Podem aceitar parâmetros de entrada.

- Podem ser invocadas em expressões SQL.

Estrutura:

CREATE OR REPLACE FUNCTION nome_funcao (parâmetros)

RETURN tipo_de_retorno IS

BEGIN

-- Corpo da função

RETURN valor_a_ser_retornado;

END;

Exemplo de Função:

CREATE OR REPLACE FUNCTION calcular_desconto(valor_produto NUMBER, desconto_percentual NUMBER)

RETURN NUMBER IS

BEGIN

RETURN valor_produto - (valor_produto * desconto_percentual / 100);

END;
Como usar: SELECT calcular_desconto(100, 10) FROM dual;

Retorna o valor do produto após aplicar um desconto de 10%.

Vantagens:

- Reutilização de código em várias partes de um sistema.

- Pode ser usada diretamente em consultas SQL.

2. Procedures (Procedimentos)

Definição:

Uma procedure (Procedimento) é um bloco de código PL/SQL que executa uma tarefa específica, mas ao contrário das

funções, não retorna um valor diretamente. Procedures são usadas para realizar operações que podem ou não

modificar dados em uma tabela.

Características:

- Não retornam valores diretamente, mas podem modificar parâmetros de saída (OUT).

- Podem aceitar parâmetros de entrada (IN), saída (OUT) e entrada/saída (IN OUT).

Estrutura:

CREATE OR REPLACE PROCEDURE nome_procedure (parâmetros)

IS

BEGIN

-- Corpo da procedure

END;

Exemplo de Procedure:
CREATE OR REPLACE PROCEDURE atualizar_preco_produto(

p_id_produto IN NUMBER,

p_novo_preco IN NUMBER)

IS

BEGIN

UPDATE produto

SET valor_produto = p_novo_preco

WHERE id_produto = p_id_produto;

END;

Como usar:

BEGIN

atualizar_preco_produto(1, 150.00);

END;

Vantagens:

- Agrupamento de operações relacionadas.

- Melhora a modularidade do código.

Diferenças entre Function e Procedure:

- Function: Retorna um valor, pode ser usada em consultas SQL.

- Procedure: Não retorna valor, usada para realizar operações complexas.

3. Triggers

Definição:

Um trigger é um bloco de código PL/SQL que é automaticamente executado (ou "disparado") em resposta a eventos
específicos que ocorrem em uma tabela ou visão, como INSERT, UPDATE ou DELETE.

Características:

- Podem ser configurados para serem executados BEFORE (antes) ou AFTER (depois) do evento.

- Podem ser aplicados a cada linha (FOR EACH ROW) ou para toda a declaração (FOR EACH STATEMENT).

Estrutura:

CREATE OR REPLACE TRIGGER nome_trigger

BEFORE/AFTER evento

ON tabela

FOR EACH ROW/STATEMENT

BEGIN

-- Corpo do trigger

END;

Exemplo de Trigger:

CREATE OR REPLACE TRIGGER trg_valor_positivo

BEFORE INSERT OR UPDATE ON produto

FOR EACH ROW

BEGIN

IF :NEW.valor_produto < 0 THEN

:NEW.valor_produto := 0;

END IF;

END;

Como funciona: Esse trigger impede que valores negativos sejam inseridos ou atualizados na coluna valor_produto.
Vantagens:

- Automatização de regras de negócios.

- Controle de auditoria e segurança.

4. CRUD (Create, Read, Update, Delete)

Definição:

CRUD é um acrônimo que representa as quatro operações básicas para manipulação de dados em um banco de dados

relacional: Create (Criar), Read (Ler), Update (Atualizar) e Delete (Excluir).

Exemplos Práticos:

CREATE (Inserir Dados):

INSERT INTO produto (id_produto, desc_produto, valor_produto)

VALUES (1, 'Produto A', 100.00);

READ (Ler Dados):

SELECT * FROM produto WHERE id_produto = 1;

UPDATE (Atualizar Dados):

UPDATE produto

SET valor_produto = 120.00

WHERE id_produto = 1;

DELETE (Apagar Dados):

DELETE FROM produto WHERE id_produto = 1;


Vantagens:

- Simplicidade e clareza na manipulação de dados.

- Operações fundamentais em qualquer sistema de banco de dados.

5. Packages

Definição:

Um package é uma coleção de funções, procedures, variáveis e outros elementos PL/SQL agrupados em uma unidade

lógica. Packages ajudam a organizar e encapsular lógicas relacionadas, facilitando a manutenção e a reutilização do

código.

Características:

- Specification (Especificação): Define a interface pública do package, listando as funções e procedures que podem ser

usadas externamente.

- Body (Corpo): Contém a implementação das funções e procedures definidas na especificação.

Estrutura de um Package:

Specification (Especificação):

CREATE OR REPLACE PACKAGE nome_package IS

PROCEDURE atualizar_preco(parametros);

FUNCTION calcular_desconto(parametros) RETURN NUMBER;

END nome_package;

Body (Corpo):

CREATE OR REPLACE PACKAGE BODY nome_package IS

PROCEDURE atualizar_preco(parametros) IS
BEGIN

-- Implementação da procedure

END;

FUNCTION calcular_desconto(parametros) RETURN NUMBER IS

BEGIN

-- Implementação da função

RETURN valor;

END;

END nome_package;

Exemplo Completo:

Vamos criar um package que agrupa a função calcular_desconto e a procedure atualizar_preco_produto:

Specification:

CREATE OR REPLACE PACKAGE produto_pkg IS

PROCEDURE atualizar_preco_produto(p_id_produto IN NUMBER, p_novo_preco IN NUMBER);

FUNCTION calcular_desconto(valor_produto NUMBER, desconto_percentual NUMBER) RETURN NUMBER;

END produto_pkg;

Body:

CREATE OR REPLACE PACKAGE BODY produto_pkg IS

PROCEDURE atualizar_preco_produto(p_id_produto IN NUMBER, p_novo_preco IN NUMBER) IS

BEGIN

UPDATE produto

SET valor_produto = p_novo_preco


WHERE id_produto = p_id_produto;

END;

FUNCTION calcular_desconto(valor_produto NUMBER, desconto_percentual NUMBER) RETURN NUMBER IS

BEGIN

RETURN valor_produto - (valor_produto * desconto_percentual / 100);

END;

END produto_pkg;

Como Usar:

BEGIN

produto_pkg.atualizar_preco_produto(1, 150.00);

DBMS_OUTPUT.PUT_LINE(produto_pkg.calcular_desconto(100, 10));

END;

Esse exemplo encapsula a lógica de produtos em um package, facilitando o reuso e a manutenção do código.

Vantagens:

- Modularidade: Pacotes agrupam lógicas relacionadas em um único local.

- Encapsulamento: Esconde detalhes da implementação, expondo apenas a interface necessária.

- Performance: Pacotes são carregados na memória na primeira vez que são referenciados, melhorando o desempenho

nas chamadas subsequentes.

Você também pode gostar