CREATE [OR REPLACE] FUNCTION 函数名称(arg1 [{IN | OUT | IN OUT}] TYPE1 [DEFAULT VALUE1], [arg2 [{IN | OUT |IN OUT }] TYPE2 [DEFAULT VALUE1]],……[argn [ { IN | OUT | IN OUT } ] TYPE [DEFAULT VALUE] ]) [AUTHID DEFINER | CURRENT_USER ] RETURN return_type
IS|AS
<类型.变量的声明部分>
BEGIN
<执行部分> RETURN expression
EXCEPTION 异常部分的处理
END 函数名称;
默认形参模式为IN ,只能读,不能写。
OUT、IN OUT可读可写。
示例:
--获取某部门的工资总和
CREATE OR REPLACE FUNCTION get_salary(Dept_no NUMBER,Emp_count OUT NUMBER) RETURN NUMBER
IS
V_sum NUMBER;
BEGIN
SELECT SUM(SALARY), count(*) INTO V_sum, emp_count
FROM EMPLOYEES
WHERE DEPARTMENT_ID=dept_no;
RETURN v_sum;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('你需要的数据不存在!');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
END get_salary;