我必须创建一个过程并使num1
(= 5)和num2
(= 3)输入参数而不是将它们声明为变量,然后将这些值分配到括号中它们。
我有第3个变量(num3
),它是num1^num2
(5 ^ 3)的结果,即125。
此pl / sql语句必须以exec my_power( 5, 3);
我收到了PLS-00306: wrong number or types of arguments in call to 'DISPLAY'
这是我的代码:
CREATE OR REPLACE PROCEDURE display
(
num1 IN NUMBER,
num2 IN NUMBER,
num3 IN OUT NUMBER
)
AS
BEGIN
num3 := num1**num2;
dbms_output.put_line('num3 = '|| (num1**num2));
END;
/
SET SERVEROUTPUT ON;
EXEC display (5, 3);
答案 0 :(得分:1)
您的程序需要3个参数,但在您的通话中,您只提供2个参数。将您的主叫代码更改为
Declare
result number;
begin
display (5, 3, result);
end;
它应该有用。
更新
您声明了一个具有两个IN参数和一个IN OUT参数的过程 - 所有这些都是必需的。因此,Oracle要求您使用三个参数调用您的过程。你可能想尝试
display(5,3,8);
但这也不行 - 你的第三个参数是IN OUT,而Oracle需要你提供一个变量,它可以存储你在过程中分配给num3的值。
但如果您只想打印计算结果,那么您真的不需要第3个参数 - 将程序更改为
CREATE OR REPLACE PROCEDURE display
(
num1 IN NUMBER,
num2 IN NUMBER
)
AS
BEGIN
dbms_output.put_line('num3 = '|| (num1**num2));
END;
然后,你可以用
来调用它EXEC display (5, 3);
答案 1 :(得分:-1)
错了,请尝试
declare
nu number;
begin
display(2, 3, nu);
dbms_output.put_line(nu);
end;