调用一个过程来添加两个带输入输出参数的数字

时间:2017-06-15 14:29:06

标签: oracle stored-procedures

create or replace procedure add(n1 in int,n2 in int,result out int)
as 
begin
result :=n1+n2;
end;

此过程已成功创建,

declare result int;
begin
add(5,5,result);
dbms_output.putline(result);
end;

并且此代码已成功运行。 输出:     10

我已经获得了获取输入参数并添加它们并显示结果的任务,而不使用dbms_output.putline(result)此命令是否有可能调用过程并显示结果而不使用dbms_output.putline(result) 需要帮助

5 个答案:

答案 0 :(得分:1)

从描述中听起来你想要一个返回数字的函数,而不是一个带有out参数的过程。

create or replace function add_numbers(n1 in int, n2 in int)
return int as
begin
  return n1+n2;
end;
/

select add_numbers(5, 5) from dual;

ADD_NUMBERS(5,5)
----------------
              10

我更改了名称,因为add is a reserved word)。

函数与过程不同,但它们通常统称为“存储过程”,尽管Oracle将它们归类为存储PL/SQL subprograms。我假设您在问题中使用“过程”是更通用的形式,可以包含函数......

不太相关,但我个人倾向于使用number而不是int;目前,或者您的代码不允许正确添加浮点数:

select add_numbers(5.6, 5.6) from dual;

ADD_NUMBERS(5.6,5.6)
--------------------
                  11

使用原生数字类型:

create or replace function add_numbers(n1 in number, n2 in number)
return number as
begin
  return n1+n2;
end;
/

select add_numbers(5, 5) from dual;

ADD_NUMBERS(5,5)
----------------
              10

select add_numbers(5.6, 5.7) from dual;

ADD_NUMBERS(5.6,5.7)
--------------------
                11.3

答案 1 :(得分:1)

这与你正在做的事情并没有什么不同。我在周围环境中创建了一个变量c(在此图中使用SQL * Plus);我使用您的过程填充它,然后使用SQL * Plus PRINT命令打印它。我不确定这表明了什么,在你最初的尝试中并没有。

SQL> create or replace procedure add_numbers(n1 in int,n2 in int,result out int)
  2  as
  3  begin
  4  result :=n1+n2;
  5  end;
  6  /

Procedure created.

SQL> variable c number            -- SQL*Plus command to create c

SQL> exec add_numbers(2, 8, :c);  -- This assigns the OUT value to c

PL/SQL procedure successfully completed.

SQL> print c

         C
----------
        10

答案 2 :(得分:1)

SET SERVEROUTPUT ON;

CREATE OR REPLACE PROCEDURE ADD_TWO_INPUT (N1 IN NUMBER,N2 IN NUMBER,ADD_RESULT OUT NUMBER)
IS
BEGIN
ADD_RESULT := N1 + N2;
Dbms_Output.PUT_LINE(ADD_RESULT);
END;
/

DECLARE
RESULT NUMBER;
BEGIN
EXECUTE ADD_TWO_INPUT(1,2,:RESULT);
END;
/

result:-
3

答案 3 :(得分:0)

创建或替换过程加3个输入(a中的数字,b中b的数字c add_out 3个输入结果))开始是a = a数字; b = b数; c = a + b;声明dbms_output.put_line(add_3输入结果);结束\

答案 4 :(得分:0)

declare

-- declare variable x, y  
-- and z of datatype number 
x number(5);              
y number(5);             
z number(7);         

begin

-- Here we Assigning 10 into x 
x:=10;                  

-- Assigning 20 into x 
y:=20;                  

-- Assigning sum of x and y into z 
z:=x+y;                  

// Print the Result 
dbms_output.put_line('Sum is '||z);  
end;  
/                          
-- Program End