-1

我想接受一个数字并返回两倍的参数值。虽然我希望它会沿着

浮点乘二(浮点数){ num*2; 返回号码;}

然而,plsql 似乎需要一种更加模糊的方法。我以为我遵循了 oracle 11g 要求的方法,但是在尝试执行以下代码时,

exec dbms_output.enable(1000000); --boilerplate
set serveroutput on           --boilerplate
CREATE OR REPLACE FUNCTION timestwo (num
IN number)
RETURN number IS
   product number(2) := 0;
BEGIN
   product := (num*2);
   RETURN product;
END;
/
EXECUTE timestwo(5);
show error                       --boilerplate

dbms 抛出以下错误:

ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00221: 'TIMESTWO' is not a procedure or is undefined
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
No errors

显然函数声明是不正确的,但是有人知道如何正确实现这个简单的代码吗?

4

1 回答 1

7

该函数是有效的,但您调用它不正确。您已经定义了一个函数。但是正如错误所暗示的那样,您将其称为过程。

你可以这样做:

select timestwo(5) from dual;

或者在 SQL*Plus 中:

var result number;
exec :result := timestwo(5);
print result

您的函数实际上不需要product定义变量;你可以稍微简化为:

create or replace function timestwo(num in number)
return number is
begin
    return num*2;
end;
/

10...对于提供超过两位数的产品的较大输入数字(如 ),这也不会出错。除非这是故意的,当然... *8-)

于 2013-04-23T19:12:36.460 回答