当前位置:首页 > 体育 >

函数体包括(函数体一般包括什么和什么)

来源:原点资讯(www.yd166.com)时间:2023-10-29 01:48:54作者:YD166手机阅读>>

用户定义函数定义

与编程语言中的函数类似,SQL Server用户定义函数是接受参数、执行操作(例如复杂计算)并将操作结果以值的形式返回的例程。返回值可以是单个标量值或结果集。

用户定义函数准则

在函数中,将会区别处理导致语句被取消并继续执行模块(如触发器或存储过程)中的下一个语句的Transact-SQL错误。在函数中,上述错误会导致停止执行函数。接下来该操作导致取消调用该函数的语句。

BEGIN...END 块中的语句不能有任何副作用。函数副作用是指对具有函数外作用域(例如数据库表的修改)的资源状态的任何永久性更改。函数中的语句唯一能做的更改是对函数上的局部对象(如局部游标或局部变量)的更改。不能在函数中执行的操作包括:对数据库表的修改,对不在函数上的局部游标进行操作,发送电子邮件,尝试修改目录,以及生成返回至用户的结果集。

如果 CREATE FUNCTION 语句对在发出 CREATE FUNCTION 语句时不存在的资源产生副作用,SQL Server将执行该语句。但在调用函数时,SQL Server不执行此函数。

在查询中指定的函数的实际执行次数在优化器生成的执行计划间可能不同。示例为 WHERE 子句中的子查询调用的函数。子查询及其函数执行的次数会因优化器选择的访问路径的不同而异。

用户定义函数分类

标量函数

用户定义标量函数返回在 RETURNS 子句中定义的类型的单个数据值。对于内联标量函数,没有函数体;标量值是单个语句的结果。对于多语句标量函数,定义在 BEGIN...END 块中的函数体包含一系列返回单个值的Transact-SQL语句。返回类型可以是任何数据类型除外text,ntext,image,cursor,和timestamp。

表值函数

用户定义表值函数返回table数据类型。对于内联表值函数,没有函数主体;表是单个 SELECT 语句的结果集。

系统函数

SQL Server提供了许多系统函数,可用于执行各种操作。这些函数不能修改。有关详细信息,请参阅内置函数 (Transact-SQL)、系统存储函数 (Transact-SQL)和动态管理视图和函数 (Transact-SQL)。

内置函数

聚合函数

聚合函数对一组值执行计算,并返回单个值。在 select 列表或 SELECT 语句的 HAVING 子句中允许使用它们。可以将聚合与 GROUP BY 子句结合使用,来计算行类别的聚合。

使用 OVER 子句来计算特定范围内的值的聚合。OVER 子句不能跟在 GROUPING 或 GROUPING_ID 聚合后。

聚合函数对一组值执行计算,并返回单个值。除了COUNT外,聚合函数都会忽略 Null 值。

所有聚合函数均为确定性函数。换言之,每次使用一组特定的输入值调用聚合函数时,它们所返回的值都是相同的。有关函数确定性的详细信息,请参阅确定性函数和不确定性函数。

只能在以下位置将聚合函数作为表达式使用:

  • SELECT 语句的选择列表(子查询或外部查询)。

  • HAVING 子句。

分析函数

解析函数基于一组行计算聚合值。不过,与聚合函数不同,分析函数可能针对每个组返回多行。可以使用分析函数来计算移动平均线、运行总计、百分比或一个组内的前 N 个结果。

排名函数

排名函数为分区中的每一行返回一个排名值。根据所用函数的不同,某些行可能与其他行接收到相同的值。排名函数具有不确定性。

行集函数

行集函数 返回可在 SQL 语句中像表引用一样使用的对象。

标量函数

对单一值进行运算,然后返回单一值。只要表达式有效,即可使用标量函数。

系统存储函数

SQL Server提供了以下组的系统函数:Always On 可用性组函数、变更数据捕获函数、更改跟踪函数、据收集器函数、Filestream 和 FileTable 函数、托管备份函数、sys.fn_get_sql、sys.fn_MSxe_read_event_stream、sys.fn_stmt_sql_handle_from_sql_stmt、sys.fn_validate_plan_guide、sys.fn_xe_file_target_read_file、sys.fn_backup_file_snapshots、语义全文搜索函数、系统元数据函数、系统安全函数、系统跟踪函数。

动态管理视图函数

动态管理视图和函数返回可用于监视服务器实例的运行状况、诊断故障以及优化性能的服务器状态信息。

动态管理视图和函数分为两种类型:

  • 服务器范围内的动态管理视图和函数。此类型需要具有该服务器的 VIEW SERVER STATE 权限。

  • 数据库范围内的动态管理视图和函数。此类型需要具有该数据库的 VIEW DATABASE STATE 权限。

用户定义函数输入

用户定义函数采用零个或多个输入参数并返回标量值或表。一个函数最多可以有 1024 个输入参数。如果函数的参数有默认值,则调用该函数时必须指定 DEFAULT 关键字,才能获取默认值。此行为与在用户定义存储过程中具有默认值的参数不同,在后一种情况下,忽略参数同样意味着使用默认值。

用户定义函数输出

用户定义函数不支持输出参数。

标量函数返回的是一个数据类型值。

内联表值函数返回的是一个table。

系统函数用户执行指定操作,可以返回数据类型值或者table。

用户自定义函数应用场景

具有重复代码、功能和代码块的地方,应使用函数以使代码具有更好的可维护性、可重用性和更少的复杂性。

需要对表中数据进行简单处理,例如数学计算时可以考虑使用函数。

只有查询功能时应优先考虑视图,包含查询和其他操作的应优先考虑函数。

用户自定义函数优点

在SQL Server中使用用户定义函数有以下优点:

  • 允许模块化程序设计。

    只需创建一次函数并将其存储在数据库中,以后便可以在程序中调用任意次。用户定义函数可以独立于程序源代码进行修改。

  • 执行速度更快。

    与存储过程相似,Transact-SQL用户定义函数通过缓存计划并在重复执行时重用它来降低Transact-SQL代码的编译开销。这意味着每次使用用户定义函数时均无需重新解析和重新优化,从而缩短了执行时间。

    和用于计算任务、字符串操作和业务逻辑的Transact-SQL函数相比,CLR 函数具有显著的性能优势。Transact-SQL函数更适用于数据访问密集型逻辑。

  • 减少网络流量。

    基于某种无法用单一标量的表达式表示的复杂约束来过滤数据的操作,可以表示为函数。然后,此函数便可以在 WHERE 子句中调用,以减少发送至客户端的数字或行数。

  • 查询中的Transact-SQL用户定义函数只能针对单个线程执行(串行执行计划)。

用户自定义函数缺点

用户自定义函数不能用于执行一系列改变数据库状态的操作。

能在函数中使用的语句有严格限制:

  • 不支持create、ALTER、drop等DDL(Data Definition Language)命令。

  • insert、delete、update只能用在临时表上。

  • 不支持动态SQL。

  • 不支持“不确定”的函数,比如常用的getdate。不确定函数是指输入参数相同,返回结果可能不同的函数。

原作者:小子pk了

原地址:

函数体包括,函数体一般包括什么和什么(1)

栏目热文

函数体主要用来做什么的(函数为什么有这么重要的作用)

函数体主要用来做什么的(函数为什么有这么重要的作用)

领域驱动设计系列本文是领域驱动设计落地系列文章的第五篇,在接下来的文章中,将会着重讲解如何通过领域驱动设计的充血模型解决...

2023-10-29 01:20:00查看全文 >>

函数从哪里开始哪里结束(函数结束有什么条件)

函数从哪里开始哪里结束(函数结束有什么条件)

Excel 可以说是历史上最好、最常用的电子表格程序。它还提供了大量其他智能工具,使其成为软件世界的“瑞士军刀”。让我们...

2023-10-29 01:24:24查看全文 >>

红绿灯的电子眼在哪里(红绿灯的电子眼是抓拍什么)

红绿灯的电子眼在哪里(红绿灯的电子眼是抓拍什么)

本文内容来自于网络,若与实际情况不相符或存在侵权行为,请联系删除。本文仅在今日头条首发,请勿搬运。随着国内经济的不断崛起...

2023-10-29 01:30:24查看全文 >>

红绿灯坏了电子眼还起作用吗(红绿灯坏了电子眼亮着还拍照吗)

红绿灯坏了电子眼还起作用吗(红绿灯坏了电子眼亮着还拍照吗)

今天下午放学后去接孩子回家,校门口满是了等着接孩子的家长。有家长说今天道口有出现了事故一个孩子被闯红灯的汽车撞倒了,好在...

2023-10-29 01:02:27查看全文 >>

红绿灯有反向电子眼是干什么的(没红绿灯的电子眼是干什么的)

红绿灯有反向电子眼是干什么的(没红绿灯的电子眼是干什么的)

来源:畅行南康在南康,特别是交通高峰期的时候,一些不文明的驾驶员在路口导向车道内变道、加塞的现象时有发生。这些行为不仅影...

2023-10-29 01:18:06查看全文 >>

函数体一般包括什么和什么(函数体一般由什么什么两部分构成)

函数体一般包括什么和什么(函数体一般由什么什么两部分构成)

29.函数。今天来介绍Python中的新概念——函数,它的英文名是Function。我认为更准确的翻译是功能,因为函数的...

2023-10-29 01:33:44查看全文 >>

一个函数的函数体一般包括(一个函数的函数体可以是空函数吗)

一个函数的函数体一般包括(一个函数的函数体可以是空函数吗)

C 小白到专家之函数引言函数是组织良好的程序中的基本建块,它允许将程序划分成逻辑上不同的部分。本文将全面介绍C 中的...

2023-10-29 01:47:50查看全文 >>

函数体包括哪些部位(什么是函数原型什么是函数体)

函数体包括哪些部位(什么是函数原型什么是函数体)

学习 Python 中的函数对于编写模块化和可重用代码至关重要。以下是帮助您学习 Python 函数的一些步骤:1. 了...

2023-10-29 01:04:13查看全文 >>

函数一般有多少种(一共有几种函数)

函数一般有多少种(一共有几种函数)

高中数学中常见的十三种函数知识点及题型归纳总结目录注:文章来源于网络,转载旨在分享,如有侵权请联系删除。,...

2023-10-29 01:40:35查看全文 >>

函数体一般包括(函数体一般包括哪两种)

函数体一般包括(函数体一般包括哪两种)

在Python编程中,函数是一种重要的语言特性。函数允许您将代码逻辑分解为小的可重复使用的块,并使程序更加模块化,可读性...

2023-10-29 01:43:24查看全文 >>

文档排行