加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 系统 > 正文

sql自定义函数有何用处?与存储过程区别在何处?

发布时间:2022-04-26 09:26:31 所属栏目:系统 来源:互联网
导读:这篇文章主要给大家介绍sql自定义函数的内容,很多朋友对于自定义函数的用处、自定义函数与存储过程区别不是很了解,因此下文给大家具体的介绍一下, 接下来跟随小编来了解一下吧。 产生背景(已经有了存储过程,为什么还要使用自定义函数) 与存储过程的区
        这篇文章主要给大家介绍sql自定义函数的内容,很多朋友对于自定义函数的用处、自定义函数与存储过程区别不是很了解,因此下文给大家具体的介绍一下, 接下来跟随小编来了解一下吧。
 
         产生背景(已经有了存储过程,为什么还要使用自定义函数)
 
          与存储过程的区别(存在的意义):
 
    1. 能够在select等SQL语句中直接使用自定义函数,存储过程不行。
    2.自定义函数可以调用其他函数,也可以调用自己(递归)
    3.可以在表列和 CHECK 约束中使用自定义函数来实现特殊列或约束
    4. 自定义函数不能有任何副作用。函数副作用是指对具有函数外作用域(例如数据库表的修改)的资源状态的任何永久性更改。函数中的语句唯一能做的更改是对函数上的局部对象(如局部游标或局部变量)的更改。不能在函数中执行的操作包括:对数据库表的修改,对不在函数上的局部游标进行操作,发送电子邮件,尝试修改 目录,以及生成返回至用户的结果集。存储过程没有此限制
    5.函数只能返回一个变量。而存储过程可以返回多个
 
    发展历史
 
    SqlServer 2000之后都支持用户自定义函数
  
  (1) 创建标量型用户自定义函数(Scalar functions) 其语法如下:
  
    各参数说明如下:
  owner_name :指定用户自定义函数的所有者。
  function_name:指定用户自定义函数的名称。database_name.owner_name.function_name 应是惟一的。
  @parameter_name:定义一个或多个参数的名称。一个函数最多可以定义1024 个参数每个参数前用“@”符号标明。参数的作用范围是整个函数。参数只能替代常量,不能替代表 名、列名或其它数据库对象的名称。用户自定义函数不支持输出参数。
  scalar_parameter_data_type:指定标量型参数的数据类型,可以为除TEXT、 NTEXT、 IMAGE、 CURSOR、TIMESTAMP 和TABLE 类型外的其它数据类型。
  scalar_return_data_type:指定标量型返回值的数据类型,可以为除TEXT、 NTEXT、 IMAGE、 CURSOR、TIMESTAMP 和TABLE 类型外的其它数据类型。
  scalar_expression:指定标量型用户自定义函数返回的标量值表达式。
  function_body:指定一系列的Transact-SQL 语句,它们决定了函数的返回值。
  ENCRYPTION:加密选项。让SQL Server 对系统表中有关CREATE FUNCTION 的声明加密,以防止用户自定义函数作为SQL Server 复制的一部分被发布(Publish) 。
   SCHEMABINDING:计划绑定选项将用户自定义函数绑定到它所引用的数据库对象如果指定 了此选项,则函数所涉及的数据库对象从此将不能被删除或修改,除非函数被删除或去掉此选项。应注意的是,要绑定的数据库对象必须与函数在同一数据库中。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读