当前位置:首页 > 文章列表 > 数据库 > MySQL > 在 SQL Server 中编写函数和存储过程

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

来源:tutorialspoint 2023-08-27 19:39:34 0浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《在 SQL Server 中编写函数和存储过程》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

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

标量函数

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

  • round() - 将数字四舍五入到最接近的三位。例如,round(28.64851) 将产生 28.649

SELECT ROUND(MARKS,0) FROM students;
  • upper() - upper("english") 返回英语,lower("ENGLISH") 返回英语。

SELECT upper(NAME) FROM Students;

输出

HARSH
SURESH
PRATIK
DHANRAJ
RAM
  • rand() - 使用函数 rand(),将返回一个范围内的随机数。例如,Rand(8),返回 0.71372242401 或任何其他随机生成的数字。

系统聚合函数

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

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 查询中检索到的值。

用户定义函数的优点

  • 支持模块化编程

  • 该函数可以创建一次,保存在数据库中,然后根据您的需要在软件中多次使用。无需更改应用程序的源代码即可更改用户定义的函数。

  • 它们可以加快执行速度

  • Transact-SQL 用户定义函数(如存储过程)通过缓存计划并在多次执行中重用它们来降低编译成本。由于用户定义的函数不需要在每次使用时重新解析和优化,因此执行时间明显缩短。

  • 对于计算工作负载、业务逻辑和字符串操作,CLR 函数的性能显着优于 Transact-SQL 函数。数据访问密集型逻辑更适合 Transact-SQL 操作。

  • 它们可能会减少网络活动。

  • 函数可用于表示基于无法用单个数字表达式表示的复杂约束来过滤信息的操作。为了减少提供给客户端的行数,可以在 WHERE 子句中使用该函数。

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

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

标准

用户定义函数

存储过程

返回值

单一值

单个、多个甚至零个

参数

输入值

输入和输出值

数据库

无法修改

可以修改

声明

仅 SELECT 语句

SELECT 和 DML 语句

呼叫

从过程中调用

无法从函数调用

编译执行

每次都需要编译

只需编译一次

交易管理

不可能

不可能

结论

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

到这里,我们也就讲完了《在 SQL Server 中编写函数和存储过程》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

版本声明
本文转载于:tutorialspoint 如有侵犯,请联系study_golang@163.com删除
比亚迪方程豹豹5开启预售,500千瓦动力超越奔驰大G比亚迪方程豹豹5开启预售,500千瓦动力超越奔驰大G
上一篇
比亚迪方程豹豹5开启预售,500千瓦动力超越奔驰大G
mysql_secure_installation - 提高 MySQL 安装安全性
下一篇
mysql_secure_installation - 提高 MySQL 安装安全性
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    514次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    499次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • SEO  AI Mermaid 流程图:自然语言生成,文本驱动可视化创作
    AI Mermaid流程图
    SEO AI Mermaid 流程图工具:基于 Mermaid 语法,AI 辅助,自然语言生成流程图,提升可视化创作效率,适用于开发者、产品经理、教育工作者。
    650次使用
  • 搜获客笔记生成器:小红书医美爆款内容AI创作神器
    搜获客【笔记生成器】
    搜获客笔记生成器,国内首个聚焦小红书医美垂类的AI文案工具。1500万爆款文案库,行业专属算法,助您高效创作合规、引流的医美笔记,提升运营效率,引爆小红书流量!
    660次使用
  • iTerms:一站式法律AI工作台,智能合同审查起草与法律问答专家
    iTerms
    iTerms是一款专业的一站式法律AI工作台,提供AI合同审查、AI合同起草及AI法律问答服务。通过智能问答、深度思考与联网检索,助您高效检索法律法规与司法判例,告别传统模板,实现合同一键起草与在线编辑,大幅提升法律事务处理效率。
    679次使用
  • TokenPony:AI大模型API聚合平台,一站式接入,高效稳定高性价比
    TokenPony
    TokenPony是讯盟科技旗下的AI大模型聚合API平台。通过统一接口接入DeepSeek、Kimi、Qwen等主流模型,支持1024K超长上下文,实现零配置、免部署、极速响应与高性价比的AI应用开发,助力专业用户轻松构建智能服务。
    747次使用
  • 迅捷AIPPT:AI智能PPT生成器,高效制作专业演示文稿
    迅捷AIPPT
    迅捷AIPPT是一款高效AI智能PPT生成软件,一键智能生成精美演示文稿。内置海量专业模板、多样风格,支持自定义大纲,助您轻松制作高质量PPT,大幅节省时间。
    638次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码