Stored procedures 调用另一个过程的过程

Stored procedures 调用另一个过程的过程,stored-procedures,plsql,oracle11g,procedure,Stored Procedures,Plsql,Oracle11g,Procedure,为什么我不能从第一个过程“numeros”捕获值,当我执行过程“somando”时,结果是空的。假设这是PL/SQL,我相信有一些可能的解决方法。最简单的方法是在过程中生成输出参数变量,以获得如下数字: CREATE OR REPLACE PROCEDURE numeros (entra1 NUMBER, entra2 NUMBER) IS v_num1 NUMBER; v_num2 NUMBER; BEGIN v_num1:=entra1; v_num2:=entra2; END; ----

为什么我不能从第一个过程“numeros”捕获值,当我执行过程“somando”时,结果是空的。

假设这是PL/SQL,我相信有一些可能的解决方法。最简单的方法是在过程中生成输出参数变量,以获得如下数字:

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
没有任何形式的输出,因此您可以输入数字,但不会输出任何结果…我是如何做到的?谢谢大家!)这应该在评论中,它不能被视为一个有效的答案。你需要给出相关的例子和解释来支持你的答案。
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;