自定义函数与储存过程的区别

存储过程和自定义函数的区别

  

Difference between Procedure and User Defined Function  

首先来看一下存储过程和自定义函数的概念

  

一、

 

什么是存储过程?

   

存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得

多。存储过程是

 SQL 

语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单

元处理。

存储过程存储在数据库内,

可由应用程序通过一个调用执行,

而且允许用户声明变

量、有条件执行以及其它强大的编程功能。

   

存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、

返回单个或多个结果集以及返回值。

   

可以出于任何使用

 SQL 

语句的目的来使用存储过程,它具有以下优点:

   

1

、可以在单个存储过程中执行一系列

 SQL 

语句。

   

2

、可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。

   

3

、存储过程在创建时即在服务器上进行编译,所以执行起来比单个

 SQL 

语句快。

   

二、什么是用户定义函数?

   

Microsoft SQL Server 2000 

允许创建用户定义函数。与任何函数一样,用户定义函

数是可返回值的例程。根据所返回值的类型,每个用户定义函数可分成以下三个类别:

   

1

、返回可更新数据表的函数

   
如果用户定义函数包含单个

 Select 

语句且该语句可更新,则该函数返回的表格格式

结果也可以更新。

   

2

、返回不可更新数据表的函数

   

如果用户定义函数包含不止一个

 Select 

语句,

或包含一个不可更新的

 Select 

语句,

则该函数返回的表格格式结果也不可更新。

   

3

、返回标量值的函数

   

用户定义函数可以返回标量值。

  

存储过程(用户定义的存储过程)和自定义函数(用户定义的函数)的区别:

 

1.

存储过程,

功能强大,

可以执行包括修改表等一系列数据库操作,

也可以创建为

 SQL 

Server 

启动时自动运行的存储过程。

  

 

 

自定义函数,用户定义函数不能用于执行一组修改全局数据库状态的操作。

 

  

 

2.

存储过程,可以使用非确定函数。

   

 

 

自定义函数,不允许在用户定义函数主体中内置非确定函数。

 

  

 

3.

存储过程,可返回记录集。

  

 

 

自定义函数,可以返回表变量。

  

  

 

4.

存储过程,其返回值不能被直接引用。

  

 

 

自定义函数,其返回值可以被直接引用。

 

  

 

5.

存储过程,用

 EXECUTE 

语句执行。

  

 

  

自定义函数,在查询语句中调用。

  

 

posted @ 2015-08-27 22:15  地狱猫  阅读(289)  评论(0编辑  收藏  举报