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

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

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 

语句执行。

自定义函数,在查询语句中调用。
时间: 2024-10-08 13:08:00

自定义函数与储存过程的区别的相关文章

mysql的函数与储存过程与pymysql的配合使用

现在mysql上定义一个函数,一个储存过程 函数: delimiter \ CREATE FUNCTION f2 ( num2 INT, num1 INT ) RETURNS INT BEGIN DECLARE a DEFAULT INT 1; SET a = num1 * num2; RETURN ( a ) ; END \ delimiter; 函数式是计算两个值相乘的 在mysql的调用 select f2(9,5); -- 45 同时函数可以是配合select 函数 from 来使用的:

【转】oracle查询用户表,函数,储存过程,

◆Oracle查询用户表空间:select * from user_all_tables ◆Oracle查询所有函数和储存过程:select * from user_source ◆Oracle查询所有用户:select * from all_users.select * from dba_users ◆Oracle查看当前用户连接:select * from v$Session ◆Oracle查看当前用户权限:select * from session_privs ◆Oracle查看用户表空间

sql之储存过程与函数的区别

1.创建函数.查找函数 /*创建带参数的函数,返回单个*/ CREATE FUNCTION [dbo].[GETGrade](@userName nvarchar(10),@subject nvarchar(10)) returns nvarchar(10) as begin declare @grade nvarchar(10) if @userName='张三' set @grade=(select [source] from TestRows2Columns where [email pr

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

语法: 创建存储过程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]]) [ characteristics..] routime_body 其中: proc_parameter : [IN|OUT|INOUT] parameter_name type 其中IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出:param_name

sqlserver自定义函数与存储过程的区别 实例详解

分享下sql server自定义函数与存储过程的区别,一起来学习下. 一.自定义函数: 1. 可以返回表变量 2. 限制颇多,包括 不能使用output参数: 不能用临时表: 函数内部的操作不能影响到外部环境: 不能通过select返回结果集: 不能update,delete,数据库表: 3. 必须return 一个标量值或表变量 自定义函数一般用在复用度高,功能简单单一,争对性强的地方.二.存储过程 1. 不能返回表变量 2. 限制少,可以执行对数据库表的操作,可以返回数据集 3. 可以ret

(转)MySQL存储过程/存储过程与自定义函数的区别

转自:http://www.cnblogs.com/caoruiy/p/4486249.html 语法: 创建存储过程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]]) [ characteristics..] routime_body 其中: proc_parameter : [IN|OUT|INOUT] parameter_name type

四十二、视图、触发器、事务、储存过程、函数、流程控制和索引等知识的应用

一.视图 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么用视图 当反复用到两张表的连接操作时,可以将连成的表当做视图保存下来,下次直接使用 3.怎么用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 删除视图:drop view teacher2course 4.注意: 在硬盘中,视图只

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

首先来看一下存储过程和自定义函数的概念 一. 什么是存储过程? 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理. 存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量.有条件执行以及其它强大的编程功能. 存储过程可包含程序流.逻辑以及对数据库的查询.它们可以接受参数.输出参数. 返回单个或多个结果集以及返回值. 可以出于任何使用SQL 语句的目的来使用存储过程

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

1: 1)存储过程,功能强大,可以执行包括修改表等一系列数据库操作,也可以创建为 SQL Server 启动时自动运行的存储过程. 自定义函数,用户定义函数不能用于执行一组修改全局数据库状态的操作. 2)存储过程,可以使用非确定函数. 自定义函数,不允许在用户定义函数主体中内置非确定函数. 3)存储过程,主要是返回一个int状态结果,也可返回记录集. 自定义函数,可以返回表变量. 关于这个,很容易糊涂.存储过程,可以使用这样的形式来返回N多的结果: create procedure sp1  a