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

당신은 값을 반환하는 함수에 절차를 변경하거나에있을 프로 시저에 인수 중 하나를 지정할 수 있습니다 OUT

+0

고마워요! :) – travisfrau

+0

이것은 코멘트 아래에 있어야합니다, 그것은 유효한 대답으로 취급 될 수 없습니다. 답을 뒷받침하는 관련 예시와 설명을 제공해야합니다. – XING