和存储过程区别
- 创建方式不一样
- 需要返回值
意义
基本情况不需要用,因为存储过程可以定义out变量输出值,过程函数可以返回一个值就没啥意义
类似js或者java…等的一个带返回值的方法
CREATE OR REPLACE
FUNCTION "helloworld2"(v_logo VARCHAR2) RETURN VARCHAR2
is
BEGIN
-- routine body goes here, e.g.
-- DBMS_OUTPUT.PUT_LINE('Navicat for Oracle');
RETURN 'helloworld'||v_logo;
END;
CREATE OR REPLACE
FUNCTION "helloworld2"(v_logo VARCHAR2) RETURN VARCHAR2
is
BEGIN
-- routine body goes here, e.g.
-- DBMS_OUTPUT.PUT_LINE('Navicat for Oracle');
RETURN 'helloworld'||v_logo;
END;
CREATE OR REPLACE
FUNCTION "get_sal" (v_dept number) RETURN number
-- 定义一个函数。获取给定部分的工资总和,要求部门号为定义的参数,工资总和定义为返回值
is
v_sum_sal number := 0;
cursor sum_sal_cursor is select salary from EMPLOYEES where DEPARTMENT_ID = v_dept;
BEGIN
for c in sum_sal_cursor loop
v_sum_sal := v_sum_sal + c.salary;
end loop;
RETURN v_sum_sal;
END;
CREATE OR REPLACE
function "get_sysdate" return date
is
v_date date;
begin
v_date := sysdate;
return v_date;
end;
CREATE OR REPLACE
FUNCTION "add_params"(v_num1 number,v_num2 number)
RETURN NUMBER
is
BEGIN
-- routine body goes here, e.g.
-- DBMS_OUTPUT.PUT_LINE('Navicat for Oracle');
RETURN v_num1 + v_num2;
END;