2013-02-01 11 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

ヒキガエルで呼び出すことができますSQL * Plusのとは異なり、** GUIベースのクライアントツールです。したがって、プロシージャを直接表示し、ツール自体から実行することができます。 –

答えて

14

あなたの手順では、アウトが含まれていますパラメータのようにブロック内で呼び出す必要があります。

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

簡単な手順です(数値パラメータR)

exec proc(1); 

または

begin 
proc(1); 
end; 
+2

プロシージャがカーソルを返す場合は、宣言して次の操作を行います。 :出力:=カーソル; これは、データグリッドにカーソルの内容を印刷します。 –

+0

さらに便利なもう1つの方法は、 exec package_name.procedure_name( 'param'、 'param2'、:0) などの出力カーソルを持つすべてのストアドプロシージャを実行することができ、データグリッドにカーソルの内容が表示されます。 –

関連する問題