重构组合查询中我调用了存储过程,这是我第一次用自己编写的存储过程,也真正见识到它的风采。
存储过程其实就是我们将我们要使用的查询语句事先写到我们的数据库中,当我们使用的时候直接调用存储过程的名字就可以了。这样很方便快捷,减少了工作量。
使用过程:
如图所示:
1、连接你的数据库,右击“存储过程”,选择“新建存储过程”
2、以组合查询为例,添加以下代码:
<strong><span style="font-size:18px;">USE [System]
GO
/****** Object: StoredProcedure [dbo].[Proc_GroupQuery] Script Date: 05/30/2015 17:22:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Proc_GroupQuery]
@cmbField1 varchar(10),
@cmbOperation1 varchar(10),
@txtContent1 varchar(10),
@cmbField2 varchar(10),
@cmbOperation2 varchar(10),
@txtContent2 varchar(10),
@cmbField3 varchar(10),
@cmbOperation3 varchar(10),
@txtContent3 varchar(10),
@cmbRelation1 varchar(10),
@cmbRelation2 varchar(10),
@tableName varchar(20)
AS
declare @TempSql varchar(500)--临时存放sql语句
BEGIN
SET @TempSql='SELECT * FROM '+@tableName +' WHERE ' +@cmbField1 +@cmbOperation1+char(39) + @txtContent1 + char(39)
if @cmbRelation1 != ''
BEGIN
SET @TempSql=@TempSql+@cmbRelation1+CHAR(32)+@cmbField2 +@cmbOperation2+CHAR(39)+@txtContent2+CHAR(39)
if @cmbRelation2!= ''
BEGIN
SET @TempSql=@TempSql+@cmbRelation2+CHAR(32)+@cmbField3+@cmbOperation3+CHAR(39)+@txtContent3+CHAR(39)
END
END
EXECUTE(@TempSql)
END</span></strong>
3、如果提示[dbo].[Proc_GroupQuery]无效。
原因是你没有创建,可以添加如下代码:
<strong><span style="font-size:18px;">if object_id('[dbo].[Proc_GroupQuery]') is not null
drop proc [dbo].[Proc_GroupQuery]
go
create proc [dbo].[Proc_GroupQuery]……</span></strong>
存储过程真的很实用,以后和它会越来越亲密的……