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