lunes, 26 de julio de 2010

ORACLE SQL ELEMENTAL

Codigo plsql para crear una tabla en la base de datos ORACLE 9i.
Al final del comando de creacion de la tabla en una nueva linea escribo el simbolo "/" que representa ejecutar el comando cuando se esta trabajando con la herramienta sqlplus de oracle.
==============================================
create table pruebaItem(
idItem number(4),
descripcionItem varchar2(30),
estado number(1)
)
/
==============================================
Resultado de ejecutar esta sentencia sql en "sqlplus" de ORACLE.
"
SQL> create table pruebaItem(
2 idItem number(4),
3 descripcionItem varchar2(30),
4 estado number(1)
5 )
6 /
Tabla creada.
"

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;
--------------------------------------------------------------------

Consultar el Contenido de una Tabla

SQL>
select
idItem,
descripcionItem,
estado
from pruebaItem
/

Resultado:
IDITEM DESCRIPCIONITEM ESTADO
---------- ------------------------------ ----------
1 ORACLE Standard One 1
2 ORACLE SQL Developer 0
3 ORACLE Data Modeler 2
4 ORACLE EXPRESS 1