En este artículo explicaremos como lanzar procedimientos o funciones desde SQL Plus..
Antes de hablar de esto, un par de consejos.
Activar siempre el serveroutput on para poder verlo que devuelve por pantalla.
set serveroutput on
Cuando estéis compilando el proceso y os de error, si poneis:
SQL> show errors
Os mostrará los errores de compilación que habéis tenido y con poner ed simplemente podreis editar e irlo cambiando, pero acordaos que esto no lo guarda, teneis que grabarlo como *sql.
Si ya tenemos el procedimiento o la función creada sin errores ya podemos lanzarlos:
1. Procedimientos:
BEGIN
Nombre_del_Package.Nombre_procedimiento(par1, par2, par3, …);
END;
/
O simplemente:
exec Nombre_procedimiento(par1, par2, par3, …);
Si el procedimiento tiene parámetros OUT de salida, hay que declararse las variables necesarias, con lo que hay que crear un cuerpo DECLARE BEGIN END;
set serveroutput on
BEGIN
V_Salida VARCHAR2(100);
Nombre_del_Package.Nombre_Procedimiento(V_Salida, ‘valor2′,…);
dbms_output.put_line (V_Salida);
END;
/
2. Funciones:
También podemos utilizar variables de salida para recuperar el valor.
set serveroutput on
DECLARE
retorno NUMBER(12.2);
BEGIN
retorno := fu_redondear(13279.3456);
dbms_output.put_line (retorno);
END;
O simplemente, siempre que no devuelva nada más que el valor del return.
Select nombre_funcion(par1, par2,…) from dual;
Os dejo un ejemplo de función con un parámetro salida y entrada (IN OUT):
CREATE OR REPLACE FUNCTION func_prueba (valorentrada IN OUT VARCHAR2)
RETURN VARCHAR2 IS
BEGIN
valorentrada := ‘HOLA’;
RETURN ‘SALIDA FUNCION’;
END func_prueba;
/
Para la ejecución:
set serveroutput on
DECLARE
salida VARCHAR2(20);
variableentrada VARCHAR2(20) := ‘ADIOS’;
BEGIN
dbms_output.put_line(‘Entrada Parametro: ‘ || variableentrada);
salida := func_prueba (variableentrada);
dbms_output.put_line(‘Salida Parametro: ‘ || variableentrada);
dbms_output.put_line(‘Return de la funcion : ‘ || salida);
END;
/