Estoy intentando ejecutar un procedimiento almacenado que tiene múltiples parámetros de entrada y salida. El procedimiento solo se puede ver en mi panel de Conexiones navegando por Otros usuarios | | Paquetes | |Ejecutar procedimiento almacenado en SQL Developer?
Si hago clic derecho, los elementos del menú son "Solicitar miembros por ..." y "Crear prueba de unidad" (en gris). La capacidad de "ejecutar" el procedimiento no parece posible cuando el usuario tiene acceso a ella.
He estado tratando de encontrar un ejemplo de cómo crear un bloque anónimo para que pueda ejecutar el procedimiento como un archivo SQL, pero no he encontrado nada que funcione.
¿Alguien sabe cómo puedo ejecutar este procedimiento desde SQL Developer? Estoy usando la versión 2.1.1.64.
¡Gracias de antemano!
EDIT 1:
El procedimiento Quiero llamar tiene esta firma:
user.package.procedure(
p_1 IN NUMBER,
p_2 IN NUMBER,
p_3 OUT VARCHAR2,
p_4 OUT VARCHAR2,
p_5 OUT VARCHAR2,
p_6 OUT NUMBER)
Si escribo mi bloque anónimo de esta manera:
DECLARE
out1 VARCHAR2(100);
out2 VARCHAR2(100);
out3 VARCHAR2(100);
out4 NUMBER(100);
BEGIN
EXECUTE user.package.procedure (33,89, :out1, :out2, :out3, :out4);
END;
me sale el error :
Bind Varialbe "out1" is NOT DECLCARED
anonymous block completed
he intentado inicializar el cabo * variables:
out1 VARCHAR2(100) := '';
pero sale el mismo error:
EDIT 2:
Sobre la base de la respuesta de Alex, he intentado quitar los dos puntos de delante de los parámetros y obtenga esto:
Error starting at line 1 in command:
DECLARE
out1 VARCHAR2(100);
out2 VARCHAR2(100);
out3 VARCHAR2(100);
out4 NUMBER(100);
BEGIN
EXECUTE user.package.procedure (33,89, out1, out2, out3, out4);
END;
Error report:
ORA-06550: line 13, column 17:
PLS-00103: Encountered the symbol "USER" when expecting one of the following:
:= . (@ % ; immediate
The symbol ":=" was substituted for "USER" to continue.
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
posible duplicado de [La mejor forma/herramienta para obtener los resultados de un procedimiento de paquete oracle] (http://stackoverflow.com/questions/3526798/best-way-tool-to-get-the-results-from- an-oracle-package-procedure) –
Intente colocar las variables OUT dentro de BEGIN, antes de la instrucción de ejecución del procedimiento. –
No necesita el 'execute'; en PL/SQL que se interpreta como el inicio de 'execute immediate', que es diferente de SQL' execute'. –