 
			
				27/04/2010, 23:31
			
			
			     |  
      |    |    |    Fecha de Ingreso: julio-2009  
						Mensajes: 28
					  Antigüedad: 16 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]           |