Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/04/2010, 23:31
eldavan
 
Fecha de Ingreso: julio-2009
Mensajes: 28
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Procedimientos genéricos en Oracle

-- CREACION DE UN CURSOR PARA UTILIZARLO EN NUESTRO PROCEDIMIENTO
create or replace package types
as
type typecursor is ref cursor;
end;





-- CREACION DE UN PROCEDURE QUE INSERTA REGISTROS + EL CODIGO AUTOGENERADO E INCREMENTADO
create or replace procedure spgenera( -- CREANDO EL PROCEDURE
nomp in articulos.art_nom%type, --VARIABLES K COINCIDEN CON LA TABLA
uni in articulos.art_uni%type, -- SE PONE (%TYPE) PARA YA NO DECLARAR DE QUE TIPO ES, SINO QUE DECIMOS K ES DEL TIPO DE REGISTRO DE LA TABLA
puni in articulos.art_pre%type,
stk in articulos.art_stk%type,
pcursor out types.typecursor) -- ESETE ES EL CURSOR
as
cod char(5); --VARIABLE LOCAL PARA CONCATENAR EL NUEVO CODIGO
nro int; -- PARA INCREMENTAR EL NUMERO
begin
select nvl(max(art_cod),'00000') into cod from articulos;-- (NVL) PARA VALIDAR QUE NO SEA NULO Y LO GUARDAMOS EN LA VARIABLE cod Y SI ESTUVIERA NULO SEPONE 0000
nro:= substr(cod,2,4)+1; -- DEL ULTIMO CODIGO EXTRAEMOS LOS NUMEROS
cod:='A' ||trim(to_char(nro,'0000')); -- CONCATENAR LA CADENA K ES X DEFAULT (A) + EL NUMERO YA INCREMENTADO
insert into articulos values(cod,nomp,uni,puni,stk);--INSERTANDO LA DATA
commit; -- EJECIUTA LA TRANSACCION
open pcursor for--ABRIMOS EL CURSOR PARA LEER EL CODIGO INCREMENTADO EN CASO K SE KICIERA IMPRIMIRLO
select max(art_cod) from articulos; -- IMPRIMIENDO EL CODIGO DEL NUEVO REGISTRO QUE SE ACABA DE INSERTAR
end; -- FINALIZANDO EL PROCEDURE

SELECT art_cod FROM articulos -- A0011


:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::



[URL="http://my.opera.com/eldavan"]
[B]PUEDES ENCONTRAR PROYECTOS COMPLETOS EN C# CON BASE DE DATOS ORACLE EN MI BLOG[/B]
[/URL]