lunes, 26 de julio de 2010

Procedimento Almacenado en la Base de Datos

Cabecera:
=============================================
 create or replace package spr_operaciones_item is
/*
  Autor     : CARLOS
  Creado    : 26/07/2010 21:22:39
  Proposito : Operaciones con la Tabla de Items
*/
 
FUNCTION recuento_items(
  iditem_desde_i    IN pruebaitem.iditem%type,
  iditem_hasta_i    IN pruebaitem.iditem%type
     ) RETURN NUMBER;
--
PROCEDURE estadoitem(
  ocurrencia_i    IN  pruebaitem.descripcionitem%type,
  codigoretorno_o OUT VARCHAR2
      );   
/*
fin de la cabecera de especificaciones
*/   
end spr_operaciones_item;
=============================================


Detalle:
--------------------------------------------------------------------
 create or replace package body spr_operaciones_item is
/*
declaracion de procedimientos y funciones
*/
FUNCTION recuento_items(
  iditem_desde_i    IN pruebaitem.iditem%type,
  iditem_hasta_i    IN pruebaitem.iditem%type
     ) RETURN NUMBER IS
 recuento NUMBER(18);
BEGIN
  SELECT COUNT(*) INTO recuento
  FROM pruebaitem
  WHERE
     iditem >= iditem_desde_i and
     iditem <= iditem_hasta_i;
  RETURN NVL(recuento,0);
END recuento_items;
--
PROCEDURE estadoitem(
  ocurrencia_i    IN  pruebaitem.descripcionitem%type,
  codigoretorno_o OUT VARCHAR2
      ) IS
BEGIN
  UPDATE pruebaitem
  SET estado = 2
  WHERE
    descripcionitem LIKE '%'||replace(ocurrencia_i,' ','%')||'%';
  IF SQL%NOTFOUND THEN
    codigoretorno_o := '25'; -- imposible encontrar
  ELSE
    codigoretorno_o := '00'; -- se cambio el estado exitosamente
  END IF;
END estadoitem;
/*
terminan las declaraciones
*/
begin
  -- Initialization
  null;
end spr_operaciones_item;
--------------------------------------------------------------------

No hay comentarios:

Publicar un comentario