2013-02-01 10 views
7

ho un definito una nuova stored procedure, ma ottenere un errore durante chiamandolo,Chiamare una stored procedure in rospo

CREATE OR REPLACE PROCEDURE SCOTT.getempsal(
     p_emp_id IN NUMBER, 
     p_emp_month IN CHAR, 
     p_emp_sal OUT INTEGER) 

AS 
BEGIN 
    SELECT EMP_SAL 
     INTO p_emp_sal 
     FROM EMPLOYEE_SAL 
    WHERE EMP_ID = p_emp_id 
    AND EMP_MONTH = p_emp_month; 

END getempsal; 

E cercando di chiamare:

getempsal(1,'JAN',OUT) --Invalid sql statement. 
+0

Toad è uno strumento ** GUI basata cliente **, a differenza di SQL * Plus. Pertanto, è possibile visualizzare direttamente la procedura ed eseguirla dallo strumento stesso. –

risposta

14

La procedura contiene un out parametro, quindi è necessario chiamarlo in blocco come:

declare 
a number; 
begin 
    getempsal(1,'JAN',a); 
    dbms_output.put_line(a); 
end; 

Una procedura semplice (diciamo con un numero paramete R) può essere chiamato con

exec proc(1); 

o

begin 
proc(1); 
end; 
+2

Se la procedura restituisce il cursore, basta dichiararlo e quindi effettuare le seguenti operazioni: : output: = cursor; Questo stamperà il contenuto del cursore nella griglia di dati. –

+0

Un'altra cosa utile: è possibile memorizzare tutte le procedure con il cursore di output come questo: exec nomepacchetto.procedura_nome ('param', 'param2',: 0) e si otterrà il contenuto del cursore nel datagrid. –

Problemi correlati