1/4/10

ORACLE 10G


CREACIÓN DE UN PROCEDIMIENTO ALMACENADO PARA INSERCIÓN AUTO GENERANDO EL CÓDIGO E INCREMENTAN-DOLO




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

No hay comentarios:

Publicar un comentario

HOLA AMIGOS, LES DEJAMOS ESTA INFORMACIÓN CON EL ÚNICO PROPÓSITO DE QUE LE UTILICEN PARA APRENDER, NO LO USEN PARA FINES DE NEGOCIO:


*=============================================*

SI LA INFORMACIÓN LES A GUSTADO NO SE OLVIDEN DE AGRADECER

*=============================================*

ATE:

_____________
Davan Palma Eli