Oracle函数创建及调用

--创建函数的语法示例
CREATE OR REPLACE FUNCTION function_name
[ (argment [ { IN | OUT | IN OUT } ] Type ,
   argment [ { IN | OUT | IN OUT } ] Type ]
RETURN return_type
{ IS | AS }
<类型.变量的说明>
BEGIN
      FUNCTION_body
EXCEPTION
      其它语句
END;
--创建函数示例
CREATE OR REPLACE FUNCTION get_salary(
  Dept_no NUMBER, Emp_count OUT NUMBER)
  RETURN NUMBER
IS
      V_sum NUMBER;
BEGIN
  SELECT SUM(sal), count(*) INTO V_sum, emp_count
        FROM emp WHERE deptno=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;
--调用方法示例:部门工资总和、人数的方法
--位置表示法
DECLARE
    V_num NUMBER;
    V_sum NUMBER;
BEGIN
    V_sum :=get_salary(30, v_num);
    DBMS_OUTPUT.PUT_LINE('30号部门工资总和:'||v_sum||',人数:'||v_num);
END;
--名称表示法
DECLARE
    V_num NUMBER;
    V_sum NUMBER;
BEGIN
    V_sum :=get_salary(emp_count => v_num, dept_no => 30);
    DBMS_OUTPUT.PUT_LINE('30号部门工资总和:'||v_sum||',人数:'||v_num);
END;

posted @ 2017-07-25 16:34  灰灰灰太狼  阅读(359)  评论(0)    收藏  举报