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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是储存过程

我第一次运用存储过程是在机房重构时,在进行组合查询设计时我需要通过多条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语句,只需要调用存储过程中定义的名称,参数即可。非常方便的

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值