Problema con cursor parametrizado
Publicado por Tomas (1 intervención) el 19/05/2012 12:52:24
MI intención es realizar un procedimiento que mediante un cursor variable pueda comprobar la existencia de dos codigos(origen,destino). He implementado el siguiente codigo y me marca error en la línea 14 y no veo el problema. Os agradeceria vuestra ayuda para entender el problema.
codigo:
/***************************************************************/
CREATE OR REPLACE PROCEDURE MOVERFAMILIA(
origen familias.identificador%TYPE,
destino familias.identificador%TYPE ) AS
/*Declaro variables:*/
/*Cursor parametrizado*/
CURSOR c1 (codigo familias.identificador%TYPE) IS SELECT * FROM FAMILIAS WHERE familias.cod=codigo;
/*Defino variable donde almacenar cada una de las limeas del cursor;*/
registro c1%ROWTYPE;
origenNo EXCEPTION;
destinoNo EXCEPTION;
BEGIN
OPEN c1(origen);
FETCH c1 INTO registro;
IF c1%NOTFOUND THEN
RAISE origenNo;
END IF;
CLOSE c1;
EXCEPTION
WHEN origenNo THEN RAISE_APPLICATION_ERROR(-20300,'Codigo de origen no existe.');
end;
/
/*********************************************************************/
Tabla sobre la que me baso:
create table familias (
identificador number(6) not null primary key,
nombre varchar2(40) not null unique,
familia number(6) references familias,
oficina number(6) references oficinas
);
codigo:
/***************************************************************/
CREATE OR REPLACE PROCEDURE MOVERFAMILIA(
origen familias.identificador%TYPE,
destino familias.identificador%TYPE ) AS
/*Declaro variables:*/
/*Cursor parametrizado*/
CURSOR c1 (codigo familias.identificador%TYPE) IS SELECT * FROM FAMILIAS WHERE familias.cod=codigo;
/*Defino variable donde almacenar cada una de las limeas del cursor;*/
registro c1%ROWTYPE;
origenNo EXCEPTION;
destinoNo EXCEPTION;
BEGIN
OPEN c1(origen);
FETCH c1 INTO registro;
IF c1%NOTFOUND THEN
RAISE origenNo;
END IF;
CLOSE c1;
EXCEPTION
WHEN origenNo THEN RAISE_APPLICATION_ERROR(-20300,'Codigo de origen no existe.');
end;
/
/*********************************************************************/
Tabla sobre la que me baso:
create table familias (
identificador number(6) not null primary key,
nombre varchar2(40) not null unique,
familia number(6) references familias,
oficina number(6) references oficinas
);
Valora esta pregunta


0