函数是可以返回值的命名的 PL/SQL 子程序,必须包含至少一条return语句(返回单个值),存储过程中也可以有return语句,但是不是用来返回值的,而是起到中断程序的作用。
1、创建函数的语法:
CREATE [OR REPLACE] FUNCTION <function name> [(param1,param2)]
RETURN <datatype> IS|AS
[local declarations]
BEGIN
Executable Statements;
RETURN result;
EXCEPTION
Exception handlers;
END;
2、定义函数的限制:
函数只能接受 IN 参数,而不能接受 IN OUT 或 OUT 参数。
函数的返回类型也必须是数据库类型
访问函数的两种方式:
使用 PL/SQL 块
使用 SQL 语句
3、创建函数:
create or replace function func_hello
return varchar2 is
begin
return 'hello,函数';
end;
4、调用函数:
PL/SQL块调用:
declare
str varchar2(50);
begin
str:=func_hello();
dbms_output.put_line(str);
end;
sql语句调用:
select func_hello() from dual;
5、代码示例:
CREATE OR REPLACE FUNCTION item_price_range (price NUMBER)
RETURN VARCHAR2 AS
min_price NUMBER;
max_price NUMBER;
BEGIN
SELECT MAX(ITEMRATE), MIN(ITEMRATE)
INTO max_price, min_price
FROM itemfile;
IF price >= min_price AND price <= max_price
THEN
RETURN '输入的单价介于最低价与最高价之间';
ELSE
RETURN '超出范围';
END IF;
END;
/