Ayuda con procedimiento
buenas tardes, soy desarrollador oracle, y cada tanto trato de hacer alguna artimaña para agilizar ciertas tareas muy tediosas, en este caso estoy tratando de hacer lo siguiente:
Muchas veces tengo el siguiente inconveniente «ora-6502 error de conversión de carácter a numero numérico o de valor», o cosas de este tipo, cuando entro veo que la función o procedimiento tienen al menos 40 argumentos 😐 me deja con el ojo cuadrado, y la única manera que conozco es revisar variable por variable cada dato que estoy enviando a la función o procedimiento y fijarme si no es null, que tipo de dato tiene, el argumento de que tipo es y bla bla bla. Intente hacer algo así
CREATE OR REPLACE PROCEDURE INSERTAR_REG_FACTURA_PREPAGA …… — esta es el procedimiento problematico
V_argumento_1
V_argumento_2
..
..
..
argumento 40) is
CURSOR CUR_TYPE IS
SELECT ARGUMENT
,PLS_TYPE
,ARGUMENT ARGUMENT2
FROM SYS.ARGUMENT$ A
,SYS.OBJ$ O
,ALL_TAB_COLUMNS ATC
WHERE A.OBJ# = O.OBJ#
AND A.ARGUMENT = ‘P_’||ATC.COLUMN_NAME
AND O.NAME = ‘nombre_funcion’ –A.OBJ# = 56643
AND TABLE_NAME = ‘nombre_tabla’
;
BEGIN
FOR R IN CUR_TYPE LOOP
INSERT INTO A(A, B, C)
VALUES(R.ARGUMENT, R.PLS_TYPE, R.ARGUMENT2 );
–R.? = AQUI QUIERO EXTRAER LO QUE ESTE DENTRO DE V_argumento_1
— ESTO HARIA QUE FACILMENTE PUEDA DETERMINAR CUAL ES EL DATO QUE ESTOY ENVIANDO MAL Y QUIERO QUE SEA ASI GENERICO
— PARA USARLO SIEMPRE EN OTRAS FUNCIONES
END LOOP;
COMMIT;
–cuerpo del procedimiento
.
.
.
.
.
.
.
.
.
.
.
end;
Les agradecería mucho su ayuda y estoy seguro que mas de uno podra utilizar este script. Desde ya gracias.