El error PLS-00653 está reportado por el soporte de Oracle en la nota Doc ID 1371524.1 y afecta a las bases de datos 10.2.0.1 (10R2) y posteriores.
Según esta nota, el error está identificado y verificado en el Bug no publicado 5668788. Y como solución proponen no sobrecargar funciones PIPELINED.
Lo primero que tenemos que hacer, por lo tanto, es identificar las funciones que están generando este error de compilación. Y para lograrlo disponemos de una vista del diccionario de datos que nos ofrece toda la información necesaria: DBA_PROCEDURES (y sus alternativas ALL_PROCEDURES y USER_PROCEDURES)
La primera consulta sobre la vista DBA_PROCEDURES muestra todas las funciones PIPELINED que existen en nuestra base de datos y que se encuentran sobrecargadas. Las funciones que generan el problema se encontrarán por tanto en el resultado de esta consulta:
-- PIPELINED functions overloaded select * from DBA_PROCEDURES where pipelined = 'YES' and nvl(overload, -1) > 0;
Afinando un poco más, podemos identificar exactamente qué funciones están sobrecargadas por otra función no PIPELINED y proceder a renombrarlas:
-- PIPELINED overloaded with other not PIPELINED functions select * from DBA_PROCEDURES pipe where pipelined = 'YES' and nvl(overload, -1) > 0 and exists ( select object_id from DBA_PROCEDURES no_pipe where no_pipe.pipelined = 'NO' and no_pipe.owner = pipe.owner and no_pipe.object_name = pipe.object_name and no_pipe.procedure_name = pipe.procedure_name );
Ya solo nos queda decidir a qué funciones vamos a cambiar el nombre, y de este modo evitar la sobrecarga. La decisión dependerá del impacto que suponga en cada caso el renombrado y la cantidad de código que deberemos adaptar.
Buenas, yo creé dos funciones que devuelven un Type table las dos con nombres de tipo y de tabla diferentes y reciben diferentes parámetros, el. Problema es que cuando quiero ejecutarlas me dice que están sobrecargadas las funciones, yo ejecute la consulta y me salen las dos funciones que están sobrecargadas, como hago para cambiar los procedurename y name?
Me gustaMe gusta