Vamos a aprender a ejecutar paquetes de Oracle desde PL/SQL Developer, si aun así no nos sirve y queremos ver lo que hace por dentro, podemos depurarlo.
Ejecutar
Para ejecutar un paquete hay que compilarlo antes en el PL/SQL para que coja la información de compilación. Desde la pestaña de la izquierda de objetos
Nos colocamos sobre el objeto a depurar y con el botón derecho del ratón pulsamos Edit Spec & body
Esto nos abre una pantalla con el paquete de Oracle, es necesario compilarla ejecutando el triángulo verde para que pueda reconocerla luego el depurador.
Hecho esto abrimos una ventana de test
Y le ponemos la llamada al paquete
BEGIN
PAQUETE.FUNCION
END
Si es una función hay que declarar una variable que tome lo que devuelve
declare
resultado varchar2(20);
begin
resultado:= rd_funciones_clientes.F_DAME_FILTRO_FECHAS_OTIF('6-6-2023','9-6-2023','BRR',1);
end;
Si tiene variables de salida
En caso de que haya
variables de tipo IN OUT definidas, eso significa que son variables de salida.
Por ejemplo:
(MICODART VDARTIC.CODART%TYPE,MICODLOT IN OUT VDLOTES.CODLOT%TYPE,MICADUCI IN OUT VDLOTES.CADUCI%TYPE, MITIPORDREC VDTIPORDRECLIN.TIPORDREC%TYPE, MICREALOTE VARCHAR2, MICODRECEP VDRECEPCAB.CODRECEP%TYPE, MSGERROR OUT VARCHAR2) AS
En ese caso, debemos declarar las variables de tipo OUT asignarles su valor y hacer la llamada con el nombre de la variable dentro de los parámetros de entrada.
set serveroutput on; (para activar DBMS_OUTPUT.PUT_LINE se
ejecuta por separado) y luego se ejecuta:
declare
--resultado varchar2(20);
msgerror varchar2(1000);
micaduci varchar2(50) := '20000110';
micodlot varchar2(50):= 'E2424374';
begin
VDPAQUETE.NOMBRE_PROCEDIMIENTO('Valor1',micodlot,micaduci,'Valor4','Valor5','Valor6',msgerror);
DBMS_OUTPUT.PUT_LINE(micaduci ||'*'|| micodlot
||'*'|| msgerror);
end;
Notese que en este caso se
ha eliminado resultado := porque es un PROCEDURE y no una
FUNCTION
Esto también vale para Oracle SQL Developer.
Es importante que elijamos Package bodies (si cogemos Package) solo muestra las definiciones y no entra en el código. Ejecutamos pulsando el botón verde triangular
Para poner los puntos de ruptura hay que posicionarse en los números de línea y pulsar el botón derecho del ratón.
Para depurar paso a paso
Cerramos la test window que abrimos en el paso anterior y nos colocamos sobre la función del paquete a depurar que se abrió al pulsar sobre Edit Spec & body.
Con el botón derecho del ratón sobre los números de la izquierda
podemos colocar puntos de ruptura para que se pare la ejecución en esos puntos.
Comenzamos la ejecución pulsando sobre el triángulo verde. La línea actual se muestra en azul.
Vamos paso a paso pulsando sobre las flechas de la toolbar
Si no pasa por la función definida posiblemente se nos ha olvidado compilarla (ver más arriba)
Podemos ver el valor que van tomando las variables escribiendo su nombre en la ventana inferior
Para acceder a ella ejecutando paso a paso desde la carga del interfaz podemos poner un punto de ruptura en la función a depurar.
Ojo, si no para es porque no entra en la función y hay que revisar la condiciones de llamada a la función
Si no cumple estas condiciones, nunca llama a la función definida y no podremos depurarla.