• oracle的函数function


    先说说functionprocedure的区别与联系

    定义:

    存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,

    经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

    存储过程是由流控制和SQL 语句书写的过程

     

    优 点:

    1. 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

    2.当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

    3.存储过程可以重复使用,可减少数据库开发人员的工作量。

    4.安全性高,可设定只有某用户才具有对指定存储过程的使用权。

     

                                           存储过程与函数的对比

    本质上没区别。只是函数有如:

    只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。 
         函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少 
          1.    一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 
          2.    对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 
          3.    存储过程一般是作为一个独立的部分来执行(EXEC执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 
          4.    当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。 
          

    1.function函数的语法如下:

          create or replace function function_name (

           argu1 [mode1] datatype1, --定义参数变量

           argu2 [mode2] datatype2 --定义参数变量

       ) return datatype --定义返回的数据类型

      is 

      begin

      end;

    1..不带任何参数的函数                                                           --这种情况平时几乎不用

    create or replace function test 

    return varchar2 

    as

    names  varchar2(50); --定义变量

    begin 

    select   name   into names    from  zy_brry; 

    return(names); --返回值

    end ;

     2..带有in 、out 参数的

    create or replace function test(v_zyh   varchar2 )

        return varchar2

    as 

        result  varchar2(10);

    begin 

       select   name into result from zy_brry where zyh=v_zyh;

       return result;

    end ;

    --调用

    select   test(2012092310)  from    dual 

  • 相关阅读:
    结构型模式:装饰者
    SQL Server Collatation
    实践SQLServer Tuning
    导出jar包时需指定mainclass
    垃圾回收
    web.config的部署
    控制反转与依赖注入
    Design Patterns Refcard
    实践理解计算机启动过程
    备忘录(memento)
  • 原文地址:https://www.cnblogs.com/thomasbc/p/12517931.html
Copyright © 2020-2023  润新知