关闭

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

672人阅读 评论(0) 收藏 举报
分类:

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语句的一部分包含它),而使用存储过程则不同。

0
0
查看评论

SparkSQL中UDF和UDAF

UDF: User Defined Function,用户自定义的函数,函数的输入是一条具体的数据记录,实现上讲就是普通的Scala函数; UDAF:User Defined Aggregation Function,用户自定义的聚合函数,函数本身作用于数据集合,能够在聚合操作的基础上进行自定义操...
  • u012297062
  • u012297062
  • 2016-08-17 09:33
  • 3172

Spark(Hive) SQL中UDF的使用(Python)

http://www.cnblogs.com/yurunmiao/p/4931095.html 相对于使用MapReduce或者Spark Application的方式进行数据分析,使用Hive SQL或Spark SQL能为我们省去不少的代码工作量,而Hive SQL或Spark...
  • zdy0_2004
  • zdy0_2004
  • 2015-11-02 21:42
  • 1968

Spark SQL UDF使用

spark sql udf编写及使用
  • u014388509
  • u014388509
  • 2014-09-19 18:17
  • 13206

Spark SQL Catalyst源码分析之UDF

Spark SQL UDF 源码分析
  • u014388509
  • u014388509
  • 2014-09-19 17:30
  • 7197

MySQL 利用UDF执行命令

UDF即User-Defined Functions lib_mysqludf_sys 在github的介绍: A UDF library with functions to interact with the operating system. These functions allow y...
  • x728999452
  • x728999452
  • 2016-09-02 14:56
  • 3308

Hive自定义函数(UDF、UDAF)

当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数。UDF用户自定义函数(user defined function)–针对单条记录。 创建函数流程 1、自定义一个Java类 2、继承UDF类 3、重写evaluate方法 4、打成jar包 6、在hiv...
  • scgaliguodong123_
  • scgaliguodong123_
  • 2015-07-21 23:12
  • 12316

SQL语法之自定义函数UDF

UDF有以下两种类型:   返回标量值的UDF。  返回表的UDF 返回标量值的UDF       这种类型的UDF和大多数SQL Server内置函数一样,会向调用脚本或存储过程返回标量值,像GETDATE()或USER()函数就会返回标量值。 ...
  • zhulongxi
  • zhulongxi
  • 2017-05-24 14:48
  • 175

Hive——用户自定义函数(UDF)

Hive——用户自定义函数(UDF)  用户自定义函数(UDF)是一个允许用户扩展HiveQL的强大的功能。用户可以使用Java编写自己的UDF,一旦将用户自定义函数加入到用户会话中(交互式的或者通过脚本执行的),它们就将和内置的函数一样使用,甚至可以提供联机帮助。Hive具有多种类型的用户自定义函...
  • universe_ant
  • universe_ant
  • 2016-03-16 20:16
  • 2056

hive UDF

HIVE允许用户使用UDF(user defined function)对数据进行处理。 用户可以使用‘show functions’ 查看function list,可以使用'describe function function-name'查看函数说明。 hive> show...
  • yfkiss
  • yfkiss
  • 2014-01-21 11:52
  • 36652

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

存储过程和用户定义函数都是“SQL语句组成的子程序,用以封装代码以便重复使用”。但区别也是显而易见的。简单说,存储过程功能强大,但调用不便,用户函数正相反。 用户定义函数的优点: 可以在SQL语句中调用,直接使用返值,从而形成复杂的SQL应用。 存储过程则只能用execute命令调用,用输出参...
  • lanchengxiaoxiao
  • lanchengxiaoxiao
  • 2012-05-04 18:01
  • 1218
    个人资料
    • 访问:4399次
    • 积分:125
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条