2013-02-01 20 views
7

Mam zdefiniowane nową procedurę przechowywaną, ale pojawia się błąd podczas wywoływania go,Wywołanie procedury przechowywanej w Toad

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; 

i próbuje nazwać:

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

Toad jest ** GUI narzędzie klient oparty **, w odróżnieniu od SQL * Plus. Możesz więc bezpośrednio przejrzeć procedurę i wykonać ją z samego narzędzia. –

Odpowiedz

14

Twoja procedura zawiera out parametr, więc musisz wywołać go w bloku:

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

Prosta procedura (powiedzmy z parametrem liczby r) może być wywołana z

exec proc(1); 

lub

begin 
proc(1); 
end; 
+2

Jeśli procedura zwraca kursor, po prostu ją zadeklaruj, a następnie wykonaj następujące czynności: : output: = cursor; Spowoduje to wydruk zawartości kursora w siatce danych. –

+0

Jeszcze jedna użyteczna rzecz - możesz wykonać wszystkie zapisane procedury z wyjściowym kursorem w ten sposób: exec nazwa_pakietu.procedure_name ('param', 'param2',: 0) , a otrzymasz zawartość kursora w datagrid. –

Powiązane problemy