假设你需要在数据库中执行一系列的SQL语句,那么可以将所有的语句封装到单个程序中,并在需要时调用这个程序,而不是每次发送所有的SQL语句。存储过程处理的是一组SQL语句。

概念

存储过程是用户定义的一系列SQL语句的集合,实际特定表或其他对象的任务,用户可以调用存储过程,而函数通常是数据库已经定于的方法,它接收参数并返回某种类型的值,并且不涉及特定用户表。
存储过程用于执行特定的操作,可以接收输入参数、输出参数,返回单个或多个结果集。在创建存储过程时,既可以指定输入参数IN,也可以指定输出参数OUT,通过在存储过程中输入参数,可以将数据传递到执行部分;通过使用输出参数,可以将执行结果传递要应用环境。存储过程可以使对数据库的管理、显示数据库及其用户信息的工作更加容易。

优点

  1. 存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和运算。
  2. 通过存储过程可以使相关的动作在一起发生,从而维护数据库的完整性。
  3. 在运行存储过程之前,数据库已经对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可以极大地改善SQL语句的性能。
  4. 因为不需要通过网络来传输很多SQL语句到数据库服务器,所以可以降低网络的通信量。
  5. 把体现企业规则的运算程序放入数据库服务器中,以便集中管理。
  6. 保证数据的安全性。

    存储过程和函数的异同

    相同点

  7. 都是存储在数据库中的程序,可以由用户直接或间接调用。

  8. 都可以有输出参数。
  9. 都是由一系列的SQL语句组成.

    不同点

  10. 标识符不同.函数的标识符是FUNCTION,存储过程的标识符是PROCEDURE。

  11. 函数必须有返回值,且只能有一个返回值;而存储过程可以有多个返回值。
  12. 存储过程无返回值类型,不能将结果直接赋值给变量;函数有返回值类型,在调用函数时,除了用在SELECT语句中,在其他情况下必须将函数的返回值赋值给一个变量。
  13. 函数可以在SELECT语句中直接使用,而存储过程不能。