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)
需要帮助
答案 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