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!