Oracle - Exceptions.CONSULTA

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado 1 puesto en Oracle (en relación al último mes)
Gráfica de Oracle

Exceptions.CONSULTA

Publicado por matias (1 intervención) el 22/07/2020 22:25:06
ACABO DE REALIZAR EL SIGUIENTE EJERCICIO DE Exceptions , Y TENGO DUDAS SI ESTOY EN LO CORRECTO, SU AYUDA LO AGRADECERÍA MUCHO
EJ:
--Realice un procedimiento almacenado que reciba código de una pieza
--y muestre el id y nombre de todos los proveedores que la
--suministran, usando cursor.
--Controle con una excepción en caso que el código de la pieza
--no exista. (Use LOOP o FOR según su preferencia)

RESPUESTA:
DROP PROCEDURE PIEZPRO;

CREATE OR REPLACE PROCEDURE PIEZPRO (P_COD PIEZAS.CODIGO%TYPE) IS
PROVE_ID PROVEEDORES.ID%TYPE;
PROVE_NO PROVEEDORES.NOMBRE%TYPE;

CURSOR SHOWPRO IS
SELECT ID,NOMBRE
FROM PROVEEDORES
WHERE CODIGO = P_COD;

BEGIN
OPEN SHOWPRO;
LOOP
FETCH SHOWPRO INTO PROVE_ID,PROVE_NO;
EXIT WHEN SHOWPRO%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EL PROVEEDOR '||PROVE_ID||' TIENE EL NOMBRE DE: '||PROVE_NO||' Y SU PIEZAS QUE SUMINISTRA ES '||P_COD);
END LOOP
CLOSE SHOWPRO;

EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('LA PIEZA '||P_COD||' NO EXISTE');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR EN EL PROCESO');

END;


ESO FUE LO QUE HICE, ME AYUDAN PORFAVOR
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Exceptions.CONSULTA

Publicado por Víctor (20 intervenciones) el 24/07/2020 00:15:28
Buenas Matías,

En general está bien, pero la excepción de no_data_found no es aplicable a un cursor, el cursor si no recupera datos simplemente no se abre el loop. Yo haría un select primero para ver si hay registros del parámetro recibido, alli si se puede usar la excepción no_data_found
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar