SQL Server 函数17 Mar 2025 | 6 分钟阅读 SQL Server 中的函数是数据库对象,它包含一组 **SQL 语句以执行特定任务**。函数接受输入参数,执行操作,然后返回结果。我们应该注意,函数总是返回单个值或表。函数的主要目的是轻松复制通用任务。我们可以一次构建函数,并根据需要将其用于多个位置。SQL Server 不允许使用函数在数据库表中插入、删除或更新记录。 以下是创建 SQL Server 函数的规则
函数的类型SQL Server 将函数分为两种类型
让我们详细描述这两种类型。 系统函数由系统定义的函数称为系统函数。换句话说,服务器支持的所有**内置函数**都称为系统函数。内置函数在执行特定任务时节省了我们的时间。这些类型的函数通常与 SQL SELECT 语句一起工作以计算值和操作数据。 以下是 SQL Server 中使用的一些系统函数列表
下图显示了 SQL Server 中使用的所有内置数据库函数 ![]() 用户定义的函数**由用户**在系统数据库或用户定义的数据库中创建的函数称为用户定义函数。UDF 函数接受参数,执行操作,并返回结果。这些函数通过封装复杂的业务逻辑并使其可根据需要随时重用,从而帮助我们简化开发。用户定义函数使查询数据所需的代码更易于编写。它们还提高了查询的可读性和功能性,并允许其他用户复制相同的过程。 SQL Server 主要将用户定义函数分为两种类型
以下是这些 UDF 函数的描述。 标量函数 SQL Server 中的标量函数总是**接受单个或多个参数并返回单个值**。标量函数有助于简化我们的代码。假设我们可能有复杂的计算,它出现在许多查询中。在这种情况下,我们可以构建一个封装公式的标量函数,并在每个查询中使用它,而不是在每个查询中都编写一遍。 以下语法说明了如何在 SQL Server 中创建标量函数 以上语法参数描述如下 我们首先在 **CREATE FUNCTION** 关键字后定义函数名称。架构名称是可选的。如果我们不定义架构名称,SQL Server 将使用默认架构 **dbo**。接下来,我们将定义用括号括起来的**参数**列表。第三,我们将编写函数的语句,然后在 **RETURNS** 语句中定义返回值的**数据类型**。最后,我们添加了 RETURN 语句以在函数体内部返回值。 示例 此示例将创建一个函数来根据数量、价格和折扣值**计算净销售额** 现在,我们可以使用此函数计算定义表中任何销售订单的净销售额。 下图显示了我们可以在哪里找到标量函数 ![]() 我们可以像 SQL Server 中的内置函数一样调用标量函数。例如,我们可以按如下方式调用上述 udfNet_Sales 函数 执行此函数将返回净销售额 ![]() SQL Server 还允许我们**使用 ALTER 关键字修改标量函数**。以下是执行此操作的语法 我们可以使用以下语句从 SQL Server 数据库中删除标量函数 表值函数 SQL Server 中的表值函数是**用户定义函数**,它返回表类型的数据。由于此函数的**返回类型是表**,我们可以像使用表一样使用它。 我们可以将表值函数分为两种类型 1. 内联表值函数 此 UDF 函数根据函数执行的操作返回表变量。应使用单个 SELECT 语句来确定表变量的值。 示例 以下示例将创建一个表值函数并检索员工表的数据 在此语法中,**RETURNS TABLE** 指定函数将返回一个表。由于没有 **BEGIN...END** 语句,它只是从员工表中查询数据。此外,如果它没有任何参数,它将直接被调用。 我们可以通过使用 **SELECT** 查询的 **FROM** 子句来调用表值函数。**例如**,我们可以按如下方式调用上述 **udf_GetEmployee** 函数 执行此函数将返回以下结果 ![]() SQL Server 还允许我们使用 ALTER 关键字而不是 CREATE 关键字修改表值函数。脚本的其余部分相同。 多语句表值函数 (MSTVF) 此 UDF 函数**返回一个表变量**,该变量基于函数执行的操作。它可以包含单个或多个语句以生成结果,它也是一个以表格形式返回多个语句结果的函数。它很有用,因为我们可以在此函数中执行多个语句并将聚合结果插入到返回的表中。我们可以通过使用表变量作为返回值来定义此函数。在函数内部,我们执行多个查询并将数据插入到此表变量中。 以下示例创建一个名为 **'MULTIVALUED'** 的函数,该函数返回 **'@Employee'** 表。它使用 INSERT 语句从 **'Employee'** 表中包含三个字段,名为 id、emp_name 和 salary,然后使用 UPDATE 语句更新员工姓名。 我们可以通过使用 SELECT 查询的 FROM 子句来调用多语句表值函数。**例如**,我们可以按如下方式调用上述函数 执行此函数将返回以下结果 ![]() 何时应该使用表值函数?表值函数通常用作参数化视图。表值函数比存储过程更灵活,因为它们可以在任何使用表的地方使用。 结论 本文将详细介绍 SQL Server 中使用的函数。在这里,我们主要学习了 SQL Server 中使用的两种类型的函数:系统函数和用户定义函数。 下一主题SQL Server 窗口函数 |
我们请求您订阅我们的新闻通讯以获取最新更新。