牛腩新闻发布系统 (三)走进存储过程

本文介绍存储过程在数据库中的应用,包括其在机房重构项目中的实例,展示了如何通过存储过程简化复杂查询,提高执行效率。存储过程不仅减少了代码量,还确保了代码的安全性和完整性。

什么是储存过程

我第一次运用存储过程是在机房重构时,在进行组合查询设计时我需要通过多条sql语句查找信息,字段和属性,我把sql语句写在了数据库的“存储过程”中,而在程序中只需要调用存储过程,就可以执行查询语句的功能了。下面是我组合查询的存储过程展示

USE [EngineSystem]
GO
/****** Object:  StoredProcedure [dbo].[PROC_CombinedQuery]    Script Date: 2018/11/13 15:40:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:		<刘桐>
-- Create date: <2018.09.05>
-- Description:	<机房重构组合查询学生信息>
-- =============================================
ALTER PROCEDURE [dbo].[PROC_CombinedQuery]
	-- Add the parameters for the stored procedure here
	@DbName nvarchar(50),
	@cmbText1 nvarchar(50),
	@cmbText2 nvarchar(50),
	@cmbText3 nvarchar(50),
	@cmbSymbol1 nvarchar(50),
	@cmbSymbol2 nvarchar(50),
	@cmbSymbol3 nvarchar(50),
	@txtDateTime1 nvarchar(50),
	@txtDateTime2 nvarchar(50),
	@txtDateTime3 nvarchar(50),
	@cmbRelation1 nvarchar(50),
	@cmbRelation2 nvarchar(50)
AS
    declare @TempSql varchar(500)--临时存放sql语句
	--Char(32)是空格  插入(39)是单引号
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.

	--一个条件的查询
	SET @TempSql='select * from '+@DbName+' where '+char(32)+@cmbText1+@cmbSymbol1+char(39)+@txtDateTime1+char(39)
    if(@cmbRelation1!='')


	--两个条件的查询
	SET @TempSql=@TempSql+char(32)+@cmbRelation1+char(32)+@cmbText2+@cmbSymbol2+char(39)+@txtDateTime2+char(39)
    if(@cmbRelation2!='')


--三个条件的查询
    SET @TempSql=@TempSql+char(32)+@cmbRelation2+char(32)+@cmbText3+@cmbSymbol3+char(39)+@txtDateTime3+char(39)

    execute(@Tempsql)
END

 

 

存储过程的优点

确实,在存储过程中写的sql语句也不少呀,为啥不直接写在程序文件中呢?

在实际开发中,我发现了写在存储过程里的两个优点

  • 保存在特定的存储过程中,一次编译,即可执行。减少了程序文件中的代码量,这样你在对程序文件中的代码进行修改时,减少了查找量,同时单独放在存储过程中又保证了这段代码的完整性和安全性。
  • 通过存储过程执行SQL语句比写在程序中再执行SQL语句的效率高 

 

 

存储过程的应用

在《牛腩》中,我们同样需要很多sql语句对新闻进行各种条件的查找,删除和更新,又一次应用了存储过程后,更加感受到了它的强大。

 

<1>存储过程的位置

以sqlserver为例,找到sqlserver中的一个数据库展开——找到可编译性展开——右键存储过程——新建存储过程

 

<2>存储过程代码说明。下图是一个已经成功执行的存储过程

 

<3>程序调用存储过程,执行sql语句增删改查功能

 

可以看到,在调用存储过程时,我们在DAL(数据传输层)不再需要些sql语句,只需要调用存储过程中定义的名称,参数即可。非常方便的

【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)内容概要:本文围绕使用Pytorch框架搭建神经网络,重点研究基于DQN算法、优先级采样的DQN算法以及DQN与人工势场相结合的方法在避障控制中的应用,提供了Matlab和Python的实现代码。文档还涵盖多种智能优化算法、机器学习与深度学习模型、路径规划技术、无人机控制、电力系统管理等多个科研方向的技术实现与仿真研究,展示了丰富的MATLAB/Simulink应用场景和前沿算法的代码复现,旨在为科研工作者提供全面的技术支持与实践参考。; 适合人群:具备一定编程基础,熟悉Python或Matlab语言,从事人工智能、自动化、控制工程、机器人、电力系统等相关领域的研究生、科研人员及工程师。; 使用场景及目标:①学习和实现强化学习在机器人或无人机避障中的具体应用;②掌握DQN及其改进算法(如优先级采样)的设计与训练流程;③结合传统人工势场法提升智能体避障能力;④获取多种高热度科研方向(如微电网优化、故障诊断、路径规划等)的代码实现与复现方案,助力论文撰写与项目开发; 阅读建议:建议按目录顺序系统性学习,重点关注DQN与人工势场融合的避障策略实现细节,结合提供的网盘资源下载完整代码进行调试与实验,同时可拓展学习文中提及的多种优化算法与深度学习模型的应用方法。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值