文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在 SQL Server 中编写函数和存储过程

2023-10-22 10:39

关注

SQL 语句的集合包含在存储过程和函数、用于执行某些任务的数据库对象中(或者也可以在数据科学中使用)。两者在很多方面都有所不同。

在本文中,我们将详细讨论函数和过程以及它们的差异。

让我们从存储过程开始 -

SQL 中的存储过程

简单编写的 SQL 代码保存起来以供多次重用,从而构成了一个存储过程。如果您能想到经常编写的查询,则可以将其保存为存储过程,然后调用该存储过程来运行作为存储过程的一部分保存的 SQL 代码。这将使您不必重复编写相同的问题。

您可以重复执行相同的 SQL 代码并向存储过程提供参数。根据需要,存储过程将根据提供的参数值做出适当的响应。

还可以通过存储过程来增强性能。一组 SQL 语句用于执行多项任务。接下来运行哪些 SQL 语句取决于初始 SQL 语句和条件逻辑的结果。这些 SQL 语句及其包含的条件逻辑可以通过将它们写入存储过程来组合成服务器上的单个执行计划。由于所有工作都在服务器上执行,因此可以执行条件逻辑,而无需将结果传递给客户端。

存储过程的优点

编译执行

每个存储过程都由 SQL Server 编译一次,然后重用执行计划。当经常调用存储过程时,性能提升是巨大的。

客户端/服务器流量减少

如果您的环境中存在网络带宽问题,存储过程可以将冗长的 SQL 搜索压缩为可以通过线路传输的单行,您将会感到欣慰。

有效的代码重用和编程抽象

许多用户和客户端应用程序都可以使用存储过程。如果您按照计划的方法使用它们,则完成开发周期所需的时间会更少。

加强安全措施

独立于基础表的权限,您可以为用户提供运行存储过程的访问权限。

SQL 中的函数

SQL Server 支持两种类型的函数

内置函数

内置函数按照 Transact-SQL 参考定义进行操作,并且不可更改。只有遵循 Transact-SQL 参考既定语法的 Transact-SQL 语句才可以使用这些函数作为参考。

系统已经定义了这些函数。它分为两类 -

在本教程中,我们将参考下表 -

ID

姓名

标记

年龄

1

严厉

90

19

2

苏雷什

50

20

3

普拉蒂克

80

21

4

丹拉吉

95

19

5

拉姆

85

18

标量函数

这些操作将一个值作为输入并输出它。一些系统标量操作包括 -

SELECT ROUND(MARKS,0) FROM students;
SELECT upper(NAME) FROM Students;

输出

HARSH
SURESH
PRATIK
DHANRAJ
RAM

系统聚合函数

这些函数返回单个值,这些函数使用输入参数的集合。例子包括 -

Avg() 将为所有提供的输入提供平均值。

示例

SELECT AVG(MARKS) FROM Students;

输出

80

Count() 此函数将返回满足给定条件的行数。

示例

SELECT COUNT(*) FROM Students;

输出

5

Max() 和 min() 函数 max() 和 min() 将返回所提供参数中的最高值和最低值。

示例

SELECT MAX(AGE) FROM Students

输出

21

示例

SELECT MIN(AGE) FROM Students;

输出

18

用户定义函数

使用 CREATE FUNCTION 命令创建自定义 Transact-SQL 函数。用户定义函数提供单个值,并且需要零到多个输入参数。某些用户定义函数 (UDF) 返回的是单个数据值,例如十进制数、字符或 int。

标量运算

用户定义的标量函数为函数操作的每一步输出一个值。返回函数中的任何数据类型值。

表值函数

内联函数

具有用户定义值的内联表函数进行运算并将结果作为表返回。没有 BEGIN/END 主体。只需使用一个 SELECT 语句即可获得结果。

多语句函数

如果用户定义函数包含不可修改的 SELECT 语句或包含多个 SELECT 语句,则其给出的结果不会更改。我们必须显式指定表变量并描述可以从各种 SQL 查询中检索到的值。

用户定义函数的优点

用户定义函数和存储过程的区别

下表突出显示了 SQL 中用户定义函数和存储过程之间的主要区别 -

标准

用户定义函数

存储过程

返回值

单一值

单个、多个甚至零个

参数

输入值

输入和输出值

数据库

无法修改

可以修改

声明

仅 SELECT 语句

SELECT 和 DML 语句

呼叫

从过程中调用

无法从函数调用

编译执行

每次都需要编译

只需编译一次

交易管理

不可能

不可能

结论

在这篇文章中,我们深入讨论了存储过程及其优点、函数、函数的类型以及函数的优点,最后得出函数和存储过程之间的区别。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯