SQL第19课——使用存储过程

embedded/2024/10/20 19:37:31/

介绍什么是存储过程?为什么要使用存储过程?如何使用存储过程?创建和使用存储过程的基本语法?

19.1 存储过程

到目前为止,使用的大多数SQL语句都是针对一个或多个表的单条语句。

对于一些复杂的操作需要多条语句才能完成。

情形:

1. 处理订单,必须核对以保证库存中有相应的物品。

2. 当物品有库存时,需要预定,不再出售给别人,并且减少物品数据反映正确的库存量;

    当库存中没有的物品需要订购,需要与供应商进行某种交互;

3. 哪些物品入库(可以立即发货),哪些物品退订,需要通知相应的顾客。

单独编写每条SQL语句,并根据结果有条件地执行其他语句。

创建存储过程:为以后使用而保存的一条或多条SQL语句。可将其视为文件,但作用不仅限于批处理。

SQLite不支持存储过程。

19.2 为什么要使用存储过程

使用存储过程的 主要好处
1. 把处理封装在一个易用的单元中,可以简化复杂的操作
2. 由于不要求反复建立一系列处理步骤,保证了数据的一致性。(所有人使用同一个存储过程,则所使用的代码都是相同的)
3. 从第2点延申为防止错误,保证了数据的一致性
4. 简化对变动的管理。(表名等有变化时,只需要更改存储过程的代码。使用人员不需要知道这些变化)
5. 第4点延申为安全性。通过存储过程限制对基础数据的访问,减少了数据讹误的机会
6. 存储过程通常以编译过的形式存储,所以DBMS处理命令所需的工作量少,提高性能
7. 存在一些只能用在单个请求中的SQL元素和特性,存储过程可以使用它们来编写功能更强更灵活的代码。

简答 + 安全 + 高性能

SQL代码转换为存储过程前的 缺陷
1. 不同DBMS的存储过程语法不同。但是存储过程的自我调节(名字以及数据如何传递)可以相对保持可移植。如果需要移植到别的DBMS上,至少客户端应用代码不需要变动。

2. 编写存储过程比编写基本SQL语句复杂。

需要更高的技能和更丰富的经验。

19.3 执行存储过程

存储过程的执行远比编写要频繁得多,用execute接受存储过程名和需要传递给它的任何参数。

存储过程所完成的工作:

1. 验证传递的数据,保证所有参数都有值;

2. 生成用作主键的唯一ID;

3. 将新添加的东西插入到需要插入的表中,在合适的列中存储生成的主键和传递的数据。

19.4 创建存储过程

各种DBMS对存储过程的实现不一,需要根据使用的DBMS来参考具体的DBMS文档。不是很好说


http://www.ppmy.cn/embedded/129071.html

相关文章

超GPT3.5性能,无限长文本,超强RAG三件套,MiniCPM3-4B模型分享

MiniCPM3-4B是由面壁智能与清华大学自然语言处理实验室合作开发的一款高性能端侧AI模型,它是MiniCPM系列的第三代产品,具有4亿参数量。 MiniCPM3-4B模型在性能上超过了Phi-3.5-mini-Instruct和GPT-3.5-Turbo-0125,并且与多款70亿至90亿参数的…

爬虫逆向学习(十二):一个案例入门补环境

此分享只用于学习用途,不作商业用途,若有冒犯,请联系处理 反爬前置信息 站点:aHR0cDovLzEyMC4yMTEuMTExLjIwNjo4MDkwL3hqendkdC94anp3ZHQvcGFnZXMvaW5mby9wb2xpY3k 接口:/xjzwdt/rest/xmzInfoDeliveryRest/getInfoDe…

线程池原理(一)

一、常用线程池体系结构图如下: 由上边的体系图可以知道,要想了解线程池 ThreadPoolExecutor 的实现原理,则需要先 了解下 Executor、ExecutorService、AbstractExecutorService 的实现,下面就分别看下 这3个类的实现 二、Executo…

6.计算机网络_UDP

UDP的主要特点: 无连接,发送数据之前不需要建立连接。不保证可靠交付。面向报文。应用层给UDP报文后,UDP并不会抽象为一个一个的字节,而是整个报文一起发送。没有拥塞控制。网络拥堵时,发送端并不会降低发送速率。可以…

MongoDB如何查找数据以及条件运算符使用的详细说明

以下是关于MongoDB如何查找数据以及条件运算符使用的详细说明: 查找数据的基本方法 在MongoDB中,使用db.collection.find()方法来查找集合中的数据。如果不添加任何条件,直接使用db.collection.find()会返回集合中的所有文档。例如&#xf…

【STM32 HAL库】MPU6050姿态解算 卡尔曼滤波

【STM32 HAL库】MPU6050姿态解算 卡尔曼滤波 前言MPU6050寄存器代码详解mpu6050.cmpu6050.h 使用说明 前言 本篇文章基于卡尔曼滤波的原理详解与公式推导,来详细的解释下如何使用卡尔曼滤波来解算MPU6050的姿态 参考资料:Github_mpu6050 MPU6050寄存器…

26备战秋招day6——计算机视觉概述

计算机视觉(Computer Vision)概述 计算机视觉是一个研究如何让机器理解、分析和生成视觉信息的领域。它涉及从图像、视频中获取有意义的信息,目的是通过自动化的方式“看懂”世界。其典型的任务包括:物体识别、图像理解、目标检测…

AI金融攻防赛:YOLO理论学习及赛题进阶思路(DataWhale组队学习)

引言 大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年10月学习赛的AI金融攻防赛学习总结文档。本文主要讲解如何在金融场景凭证篡改检测中应用YOLO算法。我们将从模型概述、数据准备、训练流程以及模…