Te recomendamos que revises esta respuesta en un ambiente controlado antes de enviarlo a producción, un saludo.
Solución:
Lanza oráculo ORA-01007
cuando las columnas de nuestra consulta no coinciden con la variable de destino.
La línea 53 es esta línea FETCH c2 INTO De_Dub_rec;
por lo que la pista es que la proyección del cursor no coincide con el tipo de registro.
Su declaración SELECT de texto libre está desordenada, lo que dificulta la depuración. Ordenemos la proyección:
SELECT S.TRANS_GUID AS OLD_TRANS_GUID
, S.DETL_CLMNS_HASH AS DETL_CLMNS_HASH1
, S.KEY_CLMNS_HASH AS KEY_CLMNS_HASH1
, S.RX_DSPNSD_DT AS R_DSPNSD_DT
, S.SUPPLIER_PHARMACY_CD AS SUPPLIER_PHARMACY_CD1
FROM ...
Ahora es fácil ver que el orden de las columnas es diferente al del tipo attribute ordenar:
TYPE rec_typ IS RECORD
(
OLD_TRANS_GUID VARCHAR2 (255),
R_DSPNSD_DT DATE,
DETL_CLMNS_HASH1 VARCHAR2(255),
KEY_CLMNS_HASH1 VARCHAR2(255),
SUPPLIER_PHARMACY_CD1 VARCHAR2(200)
);
Entonces su código está tratando de poner un string en una variable de fecha (y viceversa, pero al menos Oracle puede convertir eso).
Todo lo cual demuestra que el diseño claro no es una tontería para el TOC. La disciplina en la escritura de código nos ayuda a escribir mejor código más rápido al resaltar los errores obvios.
valoraciones y reseñas
Puedes proteger nuestra tarea exponiendo un comentario o puntuándolo te damos la bienvenida.