2013-02-01 91 views
7

存儲過程我有一個定義一個新的存儲過程,但同時稱這是得到一個錯誤,調用蟾蜍

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; 

,並試圖把它叫做:

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

蟾蜍被稱爲是一個**基於GUI的客戶端工具**,不像在SQL * Plus。因此,您可以直接查看過程並從工具本身執行它。 –

回答

14

你的程序中包含了參數,所以你需要在塊中調用它:

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

一個簡單的過程(讓我們說一個數字參數R)可與

exec proc(1); 

begin 
proc(1); 
end; 
+2

如果過程返回光標,只需聲明它,然後執行以下操作: :output:= cursor; 這將打印數據網格中的光標內容。 –

+0

一個更有用的東西 - 你可以像這樣輸出遊標的所有存儲過程: exec package_name.procedure_name('param','param2',:0) 你會得到光標內容在數據網格中。 –