Stu*_*ler -1 sql oracle variables plsql function
我想接受一个数字并返回两次参数值.虽然我希望它顺其自然
float timestwo(float num){num*2; 返回num;}
然而,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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
很明显,函数声明是不正确的,但有人知道如何正确实现这个简单的代码吗?
该函数有效,但您调用的方法不正确.你已经定义了一个函数.但是你会把它称为一个程序,正如错误所暗示的那样.
你可以这样做:
select timestwo(5) from dual;
Run Code Online (Sandbox Code Playgroud)
或者在SQL*Plus中:
var result number;
exec :result := timestwo(5);
print result
Run Code Online (Sandbox Code Playgroud)
您的函数实际上不需要product定义变量; 你可以略微简化为:
create or replace function timestwo(num in number)
return number is
begin
return num*2;
end;
/
Run Code Online (Sandbox Code Playgroud)
...对于10提供超过两位数的产品的较大输入数字(例如)也不会出错.除非那是故意的,当然......*8-)