Olá, neste post veremos um exemplo de como criar um stored procedure no Oracle para inserção, deleção e atualização. É um procedure simples, mas para conceitos didáticos pode ser muito interessante. Vamos criar uma tabela Cidades para exemplificar:
Listagem 1: Criação da tabela de exemplo
CREATE TABLE CIDADES
(
COD_CIDADE INTEGER NOT NULL,
NOME VARCHAR2(100 BYTE),
UF CHAR(2 BYTE)
)
Em seguida criaremos o procedure, que receberá além dos dados da cidade, um parâmetro indicando qual operação desejamos executar (Inserção, Alteração ou Deleção).
Listagem 2: Procedure para inserir, alterar e excluir dados da tabela
CREATE OR REPLACE PROCEDURE "SP_CIDADES" (
vCOD_CIDADE INTEGER,
vNOME VARCHAR2,
vUF CHAR,
vOPR CHAR)
IS
vEXCEPTION EXCEPTION;
BEGIN
IF (vOPR = 'I') THEN
INSERT INTO CIDADES(COD_CIDADE, NOME, UF) VALUES (vCOD_CIDADE, vNOME, vUF);
ELSE
IF(vOPR = 'A') THEN
UPDATE CIDADES SET NOME = vNOME, UF = vUF WHERE COD_CIDADE = vCOD_CIDADE;
ELSE
IF(vOPR = 'D')THEN
DELETE FROM CIDADES WHERE COD_CIDADE = vCOD_CIDADE;
ELSE
RAISE vEXCEPTION;
END IF;
END IF;
END IF;
EXCEPTION
WHEN vEXCEPTION THEN
RAISE_APPLICATION_ERROR(-20999,'ATENÇÃO! Operação diferente de I, D, A.', FALSE);
END SP_CIDADES;
Para executar o procedure no editor do Oracle, utilize o seguinte código.
EXEC SP_CIDADES(1, ‘COLATINA’, ‘ES’, ‘I’)
Como já foi dito, o procedure recebe, além dos dados referentes a cada coluna da tabela, um parâmetro que indica qual ação deve ser executada. Caso nenhum dos valores válidos (I,A ou D) seja informado, é gerada uma exceção.
Obrigado a todos!