【C# 机房重构】 存储过程

在没有进行机房之前,就听到童鞋们讲在机房重构时,会用存储过程,用这个,用那个,自己想,用它们有什么用?能给我们带来方便吗?

一、什么是存储过程?

是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过制定存储过程的名字并给出参数来执行它。存储过程是数据库中的一个重要对象。


二、为什么要使用存储过程?

看优点


三、存储过程的优缺点

1.优点

(1).重复使用,可以减少数据库开发人员分工作量。

(2).减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。

(3).安全性。参数化的存储过程可以防止SQL注入式攻击。

2.缺点

(1).调试麻烦。

(2).移植问题。

(3).重新编译问题。

(4).大量使用存储过程,难维护。


四、基本语法

Create Procedure sp_name  //sp_name 创建存储过程的 名字

@[参数名][类型],@[参数名][类型]

as

begin

......

end 


以下我组合查询时,用到的一个存储过程

ALTER PROCEDURE [dbo].[GroupQuery] 
	-- Add the parameters for the stored procedure here 在这里添加存储过程的参数
	@field1 char(20),
	@field2 char(20),
	@field3 char(20),
	@Operator1 char(20),
	@Operator2 char(20),
	@Operator3 char(20),
	@Context1 char(20),
	@Context2 char(20),
	@Context3 char(20),
	@Relation1 char(20),	
	@Relation2 char(20),
	@Getdbtable char(20)   --得到具体的表
AS
BEGIN
	declare @sql varchar(500)
	set @sql = 'select * from '+@Getdbtable+' where'+ char(32)+@field1 +@Operator1+char(39)+@Context1+char(39)
	if (@Relation1!= '')
	set @sql=@sql+char(32)+@Relation1+char(32)+@field2+char(32)+@Operator2+char(32)+char(39)+@Context2+char(39)
	if (@Relation2!= '')
	set @sql=@sql+char(32)+@Relation2+char(32)+@field3+char(32)+@Operator3+char(32)+char(39)+@Context3+char(39)
	exec(@sql)
END


解释:

set @sql = 'select * from '+@Getdbtable+' where'+ char(32)+@field1 +@Operator1+char(39)+@Context1+char(39)

追问!

SQL中的set指的是什么?

追答!

指的是为变量赋值,同时也可以写成select。

追问!

@指的又是什么?

追答!

自定义变量,一般适用于存储过程和函数当中。


实践出真理!说的再多,不如多动动我们的手指。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 27
    评论
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值