存储过程<一>

因为面试被面到存储过程和函数所以查了一些资料简单总结,记录如下:

  1. 什么是存储过程:

    存储过程是保存在数据库中的实现特定功能(如查询、更新)的一组SQl代码

  2. 存储过程和函数的区别

    区别在于返回值和调用方式:

    a.存储过程可以有多个也可以没有返回值:而函数有且只有一个返回值;

      举个例子来说如果存储过程执行的是查询功能,那么,就可能有多个返回值;

      如果是更新,就没有返回值;而函数与java中类似只能返回一个值或表对象

    b.存储过程需要单独调用,而函数可以作为查询语句的一部分,嵌入sql语句中调用;

    总的来说,执行的本质是一样的,只是函数被限制只能返回一个对象,可以是具体的值,也可以是 

    表对象,而存储过程可以有多个返回值;存储过程一般是单独调用,而函数当它返回的是值的时候可以放在查询语句中from前作为一个查询内容如:

          select count(*) from tbl_stu ;

    当它的返回值是一个表对象的时候,也可放在from 后面作为一个查询条件使用。其调用方式,在《在Oracle函数中返回表类型》中有,这里就不再赘述;

3.  为什么使用存储过程(使用存储过程有什么好处):

a.存储过程,只在创建时编译,此后执行就不需要重新编译了,比起每一调用都要重新编译一遍,   它的执行速度更快;

b.当我们要对数据库进行一些复杂的操作的时候,如对多个表进行insert,delete,update,select操   作时,通过存储过程与事务操作的结合,让这些复杂操作层次清晰,可读性强。

c.因为存储过程是保存在数据库中,可以重复使用,减少了开发人员的工作量,提高了开发效率;   同时:

如果多条SQL语句执行过程中,过程环节返回了数据作为后面环节的输入数据,如果直接通过SQL语句执行,势必导致大量的数据通过网络返回到客户机,并在客户机运算;如果封装在存储过程中,则将运算放在服务器进行,不但减少了客户机的压力,同时也减少了网络流量,提高了执行的效率

d.安全性高,通过权限限定,限定可以操作此存储过程的身份,提高了安全性;


你可能感兴趣的:(存储过程,一些总结)