2010-01-22 112 views
7

Tengo un procedimiento almacenado en Oracle y quiero probarlo desde SQLPlus.¿Cómo ejecutar el procedimiento almacenado desde SQL Plus?

Si uso

execute my_stored_proc (-1,2,0.01) 

me sale este error

PLS-00306: wrong number or types of arguments in call to my_stored_proc 

El comienzo para el proc es este

create or replace PROCEDURE my_stored_proc 
(a IN NUMBER, 
    b IN NUMBER, 
    c IN NUMBER, 
    z out NUMBER 
) AS .... 

¿Es necesario para proporcionar la una var para el cabo parámetro, es así ¿cómo? Probé:

var z NUMBER; 

Pero conseguir este error cuando trato de ejecutar el proc

execute my_stored_proc (-1,2,0.01,z) 
PLS-00201: identifier 'Z' must be declared 

también cuando estaba en SQL-desarrollador que me dio el uso y muestro las entradas en orden inverso, es decir:

execute my_stored_proc(z number,c number,b number,a number); 

qué les proporcionan en orden inverso o es sólo algo con SQL-desarrollador

No escribí el procedimiento y normalmente no me ocupo de ellos, así que me podría estar perdiendo algo obvio.

Gracias

Respuesta

14

tiene dos opciones, a/SQL bloque PL o SQL * Plus ates variables:

var z number 

execute my_stored_proc (-1,2,0.01,:z) 

print z 
-1

Se olvidaron de poner z como una variable de vinculación.

El siguiente comando EXECUTE ejecuta una sentencia PL/SQL que hace referencia a un procedimiento almacenado:

SQL> EXECUTE - 
> :Z := EMP_SALE.HIRE('JACK','MANAGER','JONES',2990,'SALES') 

Tenga en cuenta que el valor devuelto por el procedimiento almacenado se está de retorno en: Z

+3

-1 Una función puede ser usado en una expresión, un procedimiento no puede. –

Cuestiones relacionadas