Oracle函数学习一

定义:

     子程序的一种,与过程相似,也是数据库中存储的已经命名的PL/SQL块。


特性:
    (1)必须有一个返回值

    (2)函数不能单独执行,只能通过SQL语句 或者PL/SQL程序块来调用。

    (3)没有输出参数

    (4)不能包含INSERT,UPDATE和DELETE语句

    (5)PL/SQL的特有数据类型(boolean,table,record等)

语法:
     CREATE [OR REPLACE] FUNCTION function_name
     [(parameter1,parameter2...)]
      RETURN datatype
      {IS|AS}
      [local_declarations]
     BEGIN
        Exexutable_Statements;
     [EXCEPTION
        Exception_handlers;]
      END;

调用:

    语句调用:

    SELECT function_name[(parameter1,parameter2...)] FROM DUAL; //select fun_sum(1,11) from dual;

    命令行调用1:

    SQL> var v_name varchar2(50)
    SQL> exec :v_name:=get_stu;

    PL/SQL procedure successfully completed
    v_name
    ---------
    mary

    命令行调用2:

    SQL> SET SERVEROUTPUT ON
    SQL> exec dbms_output.put_line('当前数据库用户是:'||get_stu);

    当前数据库用户是:mary


示例:

   有参:

    create or replace function fun_sum(a number,b number)
    return number
    IS
    BEGIN
       return a+b;
    END;

    无参:

    create or replace function get_stu return varchar2 is
    v_user varchar2(50);
    begin
      select name into v_user from student where id=1;
      return v_user;
    end get_stu;

查看数据库里面的用户创建的函数:
     select object_name from user_objects where object_type='FUNCTION';

     select substr(object_name,1,20) object_name,object_type from user_objects where object_type='FUNCTION';


授权:

     GRANT EXECUTE ON function_name TO USER_Name; //函数的使用权授予特定的用户

     GRANT EXECUTE ON function_name TO public; //函数的使用权授予数据库中所有用户

      如:GRANT EXECUTE ON fun_sum to public;

删除:

      DROP FUNCTION Function_name;

posted on 2012-03-20 14:22  阳光总在风雨后001  阅读(235)  评论(0编辑  收藏  举报

导航