当前位置: 首页 > news >正文

网站动态图怎么做阳明拍卖公司网站

网站动态图怎么做,阳明拍卖公司网站,wordpress 开启注册,婚庆公司网站搭建什么是存储过程 SQL 存储过程(Stored Procedure)是一个在数据库中预编译并存储的一组 SQL 语句。它们可以包含查询、插入、更新、删除等数据库操作,甚至包括控制流语句(如条件判断、循环等)。存储过程可以通过调用来执…

什么是存储过程

SQL 存储过程(Stored Procedure)是一个在数据库中预编译并存储的一组 SQL 语句。它们可以包含查询、插入、更新、删除等数据库操作,甚至包括控制流语句(如条件判断、循环等)。存储过程可以通过调用来执行,而不需要每次都重新编写和执行 SQL 语句。

分类

  1. 系统存储过程
    是再master数据库中,其他数据库可以直接使用系统存储过程
    再新的数据库中会自动创建
    调用时,不需要加数据库名称

  2. 自定义存储过程
    开发者自己创建的
    可以传参 也可以有返回值
    怎么标明存储过程是否执行成功
    print 日志 查看日志即可
    存储过程内部可以写什么?
    一个或者多个操作
    存储过程与表之间的关系是什么?
    存储过程依赖表的存在,如果存储中依赖的表删除了,那么存储过程也就失效了
    关系:操作与被操作的关系
    执行:exec/execute 存储过程名参数列表(多个参数,用逗号分割)
    存储过程的优缺点是什么?
    优点:提高了程序的可复用性,减少脚本冗余
    提高了管理数据库的效率
    提高了执行sql的熟读
    减轻了服务器的负担
    缺点:需要专门维护,占用数据库空间,

存储过程的优点:

性能提升:

存储过程是在数据库中编译并优化过的,因此执行时可以比单独的 SQL 查询更高效。因为在执行时,SQL
语句已经预编译,避免了重复解析和优化的开销。

重用性:

存储过程是可重用的,可以通过调用存储过程多次执行相同的操作,而无需重复编写相同的 SQL 语句。

封装性:

存储过程将数据库逻辑封装起来,使得应用程序与数据库操作解耦,减少了应用程序和数据库之间的依赖。

安全性:

通过限制应用程序对数据库表的直接访问,存储过程可以提供更好的安全性。用户只需要权限调用存储过程,而无需直接访问底层数据表。

事务管理:

存储过程支持事务管理,可以确保一组操作要么全部成功,要么全部失败(原子性)。这使得数据的一致性得到了保障。

定义存储过程 名称:建议以为 Proc开头

create proc Proc_gen_orderNo
as 
begin -- {
-- 这里编写执行逻辑
print '开始执行...'
select * from BookInfos
select * from BookShellInfos
print '存储过程执行完毕'
end --}
---- bug: 如果 存储过程已经存在,执行新建报错触发存储过程
exec Proc_gen_orderNo

练习:

完成自动生成订单编号的逻辑:
订单编号:2025062600001 202506260002 202506260003
前8位:插入数据的日期
后5位:订单编号的流水号码

思考问题:

如果获取当前时间编号?

select convert(varchar(255),getDate(),112) -- 20250626

如何查询最后一条记录的编号?
方式一:

declare @lastNo varchar(255) 
select  @lastNo=orderNo from orderTable

问题:数据只有几百条,没有影响,
假如每天都产生上万个订单,如果查全部,查询的时间,一天比一天慢
优化:查询今天的数据,倒序排序,在查第一条,== 今天最后一个点单
方式二:

select top 1 @lastNo=orderNo from orderTable where substring(orderNo,1,8) = @ starTimespan
order by orderId desc;

如何生成新的编号
新编号

 set @No = @starTimespan + '00001'

编号已经存在,怎么验证编号已经存在,如何再已存在编号基础上进行生成

create proc Proc_gen_orderNo 
as 
begin-- 1:声明完成整个过程需要的变量declare @No  varchar(255)   -- 执行后,生成的编号declare @starTimespan  varchar(255) -- 当前时间,时间编号declare @lastNo varchar(255)  -- 最后一条记录的订单编号-- 2:给变量初始化赋值set @starTimespan = convert(varchar(255),getDate(),112) -- 时间编号-- 找到最后一条记录的编号select top 1 @lastNo=orderNo from orderTablewhere substring(orderNo,1,8) = @starTimespan order by orderId desc -- 3:生成新的编号-- 3.1 如果最后一条记录不存在if @lastNo is nullbeginset @No = @starTimespan + '00001'insert into orderTable(orderNo) values(@No)print '第一个订单已产生' endelse  begin -- 存在最后一条记录print '今天已经有了订单'declare @lastNo_ int  -- 当前生成记录的尾号declare @tmpNo varchar(255)  -- 编号尾号字符串类型declare @tmpLen int;  -- 字符尾号的长度declare @n int -- 循环次数set @n = 0;  --设置循环次初始值print  substring(@lastNo,9,5)-- 求当前订单,流水的序号set @lastNo_ = convert(int, substring(@lastNo,9,5)) +1 print @lastNo_-- 将流水序号,转化为字符串类型set @tmpNo = convert(varchar(10),@lastNo_)-- 当前字符流水的长度。set @tmpLen = len(@tmpNo)print @tmpLen-- 求流水号前面拼接几个0,流水号总长度为5.while(@n<5-@tmpLen)beginSET @tmpNo = '0' + @tmpNoset @n +=1end-- 生成新的编号set @No = @starTimespan + @tmpNoprint @No-- 插入数据insert into orderTable(orderNo) values(@No)endend
-- 1:执行新建 存储过程
-- 2:触发存储过程。exec Proc_gen_orderNo
http://www.dtcms.com/a/438007.html

相关文章:

  • 01_Docker 部署 Ollama 模型(支持 NVIDIA GPU)
  • 苏州新区网站制作wordpress视频格式
  • 一位Android用户的科技漫游手记
  • android中调用相册
  • 安卓基础组件031-Retrofit 网络请求框架
  • Redis 黑马点评-商户查询缓存
  • Android geckoview 集成,JS交互,官方demo
  • 【APK安全】Android 权限校验核心风险与防御指南
  • 单调队列与单调栈
  • 设计与优化Java API:构建高效、可维护的接口
  • Locality Sensitive Hashing (LSH) 详解:高效检测语言语句重复的利器
  • 阿里云网站开发零起步如何做设计师
  • 后端开发基础概念MVC以及Entity,DAO,DO,DTO,VO等概念
  • 七大排序算法的基本原理
  • Gateway-过滤器
  • 科普:Python 中,字典的“动态创建键”特性
  • Java 21 或 JavaFX 打包 exe 之 GraalVM Native Image 方案
  • 1.2.3 MCP(Model Context Protocol)
  • dede网站栏目管理网络科技是做什么的
  • 《Gdb 调试实战指南:不同风格于VS下的一种调试模式》
  • lua虚拟机的垃圾回收机制
  • 网站建设需要的材料wordpress自带的404
  • MPAndroidChart 用法解析和性能优化 - Kotlin Java 双版本
  • Qt中使用日志---Log4Qt
  • linux centos 7 解决终端提示符出现-bash-4.2的问题
  • MCP模型上下文协议实战:个人应用项目如何集成MCP?
  • Vue--Vue基础(一)
  • 外贸网站推广如何做郑佩佩 最新消息
  • 用VScode和msys2配置C/C++和wxWidgets
  • 【升级安卓9教程】华为Q21_Q21A_Q21C_Q21AQ_Q21AE_hi3798mv200线刷烧录包带adb权限