2017-02-01 10 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; 

Почему я не могу поймать значения из первой процедуры «число», когда я выполняю процедуру «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