SQl中的UDF(用户自定义函数)与存储过程的区别、优点

原创 2016年08月30日 17:51:24

UDF定义:

和存储过程很类似,用户自定义函数是一组有序的T_SQL语句,这些语句被预先优化和编译,并且可以作为一个单元来进行调用。UDF和存储过程的主要区别在于结果的返回方式。为了能支持多种的不同的返回值,UDF比存储过程有更多的限制。

UDF和存储过程的具体区别:

存储过程

使用存储过程是可以传入参数,也可以穿出参数。可以返回值,不过该值用于指示成功或失败,而非返回数据。也可以返回结果集,但是在么有将结果集插入到某种表(通常是临时表)中以供后面使用的情况下,不能在查询中真正的使用它们。

UDF

      使用UDF时可以传入参数,但不可以传出参数,输出参数的概念被更为健壮的返回值取代。和系统函数一样,可以返回标量值,这个值的好处是它并不想在存储过程中那样只限制整型数据类型,而是可以返回大多数的SQL Server 数据类型

UDF有以下两种类型:

1.返回标量值的UDF

2.返回表的UDF

UDF的优点:

UDF的真正有点在于返回值并不限于整数,而是可以返回除了BLOB、游标(Cursor)和时间戳(Timestamp)以外的任何有效的SQL Server 数据类型(包括用户自定义类型)。即使想返回整数,UDF也有以下两个吸引人的方面:

1.与存储过程不同,用户自定义函数返回值的目的是提供有意义的数据;而对于存储过程来说,返回值只是说明成功或失败,如果失败,则会提供一些关于失败性质的特定信息。

2.可在查询中内联执行函数(例如,作为SELECT语句的一部分包含它),而使用存储过程则不同。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Spark SQL Catalyst源码分析之UDF

Spark SQL UDF 源码分析

存储过程和自定义函数的优缺点

存储过程和用户定义函数都是“SQL语句组成的子程序,用以封装代码以便重复使用”。但区别也是显而易见的。简单说,存储过程功能强大,但调用不便,用户函数正相反。 用户定义函数的优点: 可以在SQL语句...

sparkSQL中UDF的使用

在spark中使用sql时可能会想自定义一些函数,可以使 udf 来实现,下面举了几个简单易懂的例子。...
  • lsshlsw
  • lsshlsw
  • 2015年12月24日 23:33
  • 2868

【个人学习笔记16之--浅谈UDF(用户自定义函数)】

好久不写了,今天来说说UDF(用户自定义函数)UDF分为标量UDF和表值UDF。ps:每种都有CLR UDF的在05里面 本人不熟悉 所以只写T-SQL的 使用场合——在 Transact-SQL 语...

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

    刚开始学SQL,很快就发现存储过程和数据库自定义函数之间貌似有很多的相同点,所以把其差别简单做下记录,以备以后查阅:    存储过程:存储过程可以使得对数据库的管理、以及显示关于数据库及其用户...

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数。 1.   最基本的算法是,从小到大遍历: for (i = 2 to A -1)          if (i * B > A)...

利用K-means聚类算法根据经纬度坐标对中国省市进行聚类

K-means聚类算法是一种非层次聚类算法,在最小误差的基础上将数据划分了特定的类,类间利用距离作为相似度指标,两个向量之间的距离越小,其相似度就越高。程序读取全国省市经纬度坐标,然后根据经纬度坐标进...

Radon变换理论介绍与matlab实现--经验交流

本人最近在研究Radon变换,在查阅了各种资料之后在此写下个人的理解,希望与各位牛牛进行交流共同进步,也使得理解更加深刻些。 Radon变换的本质是将原来的函数做了一个空间转换,即,将原来的XY平...

CT图像重建技术

由于csdn贴图不方便,并且不能上传附件,我把原文上传到了资源空间CT图像重建技术 1.引言 计算机层析成像(Computed Tomography,CT)是通过对物体进行不同角度的射线投影测量而...

Matlab绘图-很详细,很全面

Matlab绘图强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Ma...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQl中的UDF(用户自定义函数)与存储过程的区别、优点
举报原因:
原因补充:

(最多只允许输入30个字)