`

ORACLE中函数和存储过程的区别

    博客分类:
  • SQL
阅读更多
函数和存储过程的区别
从参数的返回情况来看:
     如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可以使用函数;
从调用情况来看:
     如果在SQL语句(DML或SELECT)中调用的话一定是存储函数或存储的封装函数不可以是存储过程,但调用存储函数的时候还有好多限制以及函数的纯度等级的问题,你可以参考如果是在过程化语句中调用的话,就要看你要实现什么样的功能。函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等),所以虽然他们的语法上很相似但用户在使用他们的时候所需要完成的功能大部分情况下是不同的。

======================================================================
存储过程和函数:



    例子:

    //创建过程

    create or replace procedure add_emailinfo(namee email_info.fullname%type ,address email_info.email_address%type )

    is

    begin

    insert into email_info(fullname,email_address) values (namee,address);

    end;

    //调用过程

    call add_emailinfo('cherry','asdfsdf');

    /////////////////////////////////////////////////////////////////////////////////////

    //创建函数

    create or replace function  sel_emailinfo(namee email_info.fullname%type )

    return varchar2 is

    address varchar2(30);

    begin

    select email_address into address from email_info

    where trim(fullname)=trim(namee);

    return address;

    end ;

    //调用函数

    select sel_emailinfo('bbb') from dual;


另:
函数其实不是单纯的返回一个值,也可以是一个type,可以再rowtype中定义一系列字段,用rowtable引用,函数直接返回rowtable。可见前几遍博文。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics