2012-04-05 10 views
28

パラメータ:私はこのようにそれを実行したときにが、私は、この手順を持って

CREATE OR REPLACE PROCEDURE PROC1(invoicenr IN NUMBER, amnt OUT NUMBER) 
AS BEGIN 
SELECT AMOUNT INTO amnt FROM INVOICE WHERE INVOICE_NR = invoicenr; 
END; 

だから、絶対に何も返しません:

DECLARE 
    amount NUMBER; 
BEGIN 
    PROC1(1000001, amount); 
    dbms_output.put_line(amount); 
END; 

ところで私はのDreamCoderを使用しますオラクルプロシージャ自体に問題があるのですか? INVOICE_NRが1000001のINVOICEテーブルにエントリがあります。

+2

「begin dbms_output.put_line( 'output test')end;」を実行すると、出力が見えますか?この手順とそれを呼び出す方法は完全に正しいです。 – arturro

+0

私はこれをこの方法で実行しますが、出力は表示されません。 DreamCoderがput_line()の出力を表示しない可能性はありますか? – RegedUser00x

+0

いいえ私は 'BEGINで試しました dbms_output.put_line( 'hi'); END; 'と表示され、何も表示されません。 – RegedUser00x

答えて

1

メニューツール - > SQL出力、PL/SQL文実行、 SQL出力パネルに出力が表示されます。

34

コード全体の前にONモードでサーバー出力を設定した場合は動作します。それ以外の場合はput_line()は機能しません。それを試してみてください!

コードは、

set serveroutput on; 
CREATE OR REPLACE PROCEDURE PROC1(invoicenr IN NUMBER, amnt OUT NUMBER) 
AS BEGIN 
SELECT AMOUNT INTO amnt FROM INVOICE WHERE INVOICE_NR = invoicenr; 
END; 

そしてそれがあるとして関数を呼び出す:

私は同じproblem.Iトリガーを使用し、そのトリガーに私がプロシージャを呼び出した
DECLARE 
amount NUMBER; 
BEGIN 
PROC1(1000001, amount); 
dbms_output.put_line(amount); 
END; 
2

2 OUT変数のいくつかの値を計算します。私は結果をトリガー本体に表示しようとしましたが、スクリーン上には何も表示しませんでしたが、この問題を2つのローカル変数を関数にして解決し、あなたのOUT手続き変数。 私は、それが役に立つだろう、成功することを望む!

関連する問題