2017-02-01 31 views
1
CREATE OR REPLACE PROCEDURE numeros (entra1 NUMBER, entra2 NUMBER) 
IS 
v_num1 NUMBER; 
v_num2 NUMBER; 
BEGIN 
v_num1:=entra1; 
v_num2:=entra2; 
END; 

----------------------------------------------------------------------- 

CREATE OR REPLACE PROCEDURE somando 
IS 
v_soma NUMBER; 
v_num1 NUMBER; 
v_num2 NUMBER; 
BEGIN 
numeros(40,60); 
v_soma:=(v_num1+v_num2); 
DBMS_OUTPUT.PUT_LINE('O valor da soma de ' ||v_num1||' e '||v_num2||' é:'||v_soma); 
END somando; 

最初のプロシージャ "numeros"から値をキャッチできない理由は、プロシージャ "somando"を実行すると結果が空になります。プロシージャ別のプロシージャを呼び出す

+0

OUTにあるようにプロシージャに引数のいずれかを指定しますか何も出てこない... – JohnHC

+0

どうすればいいの? – travisfrau

答えて

2

これはPL/SQLと仮定すると、これにはいくつかの回避策が考えられます。最も簡単にはそうのような番号を取得する手順で出力パラメータ変数を作成すること:

CREATE OR REPLACE PROCEDURE numeros(
    entra1 IN NUMBER, 
    entra2 IN NUMBER, 
    out_entra1 OUT NUMBER, 
    out_entra2 OUT NUMBER) 
IS 
    v_num1 NUMBER; 
    v_num2 NUMBER; 
BEGIN 
    v_num1 := entra1; 
    v_num2 := entra2; 
    out_entra1 := v_num1; 
    out_entra2 := v_num2; 
END numeros; 

    ---------------------------- 

CREATE OR REPLACE PROCEDURE somando IS 
    v_soma NUMBER; 
    v_num1 NUMBER; 
    v_num2 NUMBER; 
BEGIN 
    dbms_output.enable(); 
    numeros(40,60,v_num1,v_num2); 
    v_soma := (v_num1+v_num2); 
    DBMS_OUTPUT.PUT_LINE('O valor da soma de ' ||v_num1||' e '||v_num2||' é:'||v_soma); 

END somando; 

私はより多くの推奨される方法は、パッケージにこれら二つの手順を配置することで、ヘッダ内のグローバル変数を宣言するだろうと信じていますが、私はあなたの設定がどのようなものか分かりません。

-1

あなたが値を返す関数に手順を変更、または `numeros`は、出力のno形式を持っていないので、あなたがたが中に数字を置くことができる

+0

ありがとうたくさんの人! :) – travisfrau

+0

これはコメントの下にあるはずです。有効な回答として扱うことはできません。あなたは、あなたの答えをサポートするための関連する例と説明を与える必要があります。 – XING

関連する問題