2017-02-01 28 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

'numeros'沒有任何形式輸出的,所以你可以把號碼,但什麼都不會出來... – 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

您可以更改的方法來返回值的函數,或指定的參數之一的程序是IN OUT

+0

非常感謝你們! :) – travisfrau

+0

這應該被評論,它不能被視爲一個有效的答案。你需要提供相關的例子和解釋來支持你的答案。 – XING