继上篇博客,存储过程---留住你的美丽(上),接着叨叨,美丽是留住了,如何让美丽持久惊艳别人的眼球,我们就要开动我们的小脑袋,转一转,想一想,一如上篇博客中所展示的代码一样,需要传十一个参数,各个层之间都需要重复写,键盘累了,坏了怎么办nie?还要重新上京东买,咳咳咳,言归正传,依旧结合机房收费来说,如何让存储过程美丽持久,流年过往,经年不忘......
在机房收费系统中,涉及三个组合查询,分别是学生基本信息维护、学生上机状态查看、操作员工作记录;如何让三个组合查询使用同一个存储过程,就需要我们转转小小的脑袋,几经周折,发现,我们可以把表名当成一个参数进行传递,这样,用到不同表的时候,我们只需要变更表名即可,存储过程写法如下所示:
USE [MachineRoomChargeSystem]
GO
/****** Object: StoredProcedure [dbo].[Proc_GroupQuery] Script Date: 08/01/2014 19:24:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <丁国华>
-- Create date: <2014年7月31日 20:08:32>
-- Description: <组合查询--学生上机状态查看,操作员工记录>
-- =============================================
ALTER PROCEDURE [dbo].[Proc_GroupQuery]
-- Add the parameters for the stored procedure here
@cboFieldA varchar(10), --字段名A
@cboOperatorA varchar(10), --操作符A
@txtContentA varchar(10), --要查询的内容A
@cboRelationA varchar(10), --组合关系A
@cboFieldB varchar(10), --字段名B
@cboOperatorB varchar(10), --操作符B
@txtContentB varchar(10), --要查询的内容B
@cboRelationB varchar(10), --组合关系B
@cboFieldC varchar(11), --字段C
@cboOperatorC varchar(10), --操作符C
@txtContentC varchar(10), --要查询的内容C
@tableName varchar(50) --要查询的视图名或表面名
AS
declare @strText varchar(500)--临时存放sql语句
--CHAR(32)是空格,CHAR(39)单引号
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
set @strText ='select * from '+@tableName+' where status !='+CHAR(39)+'正常上机'+CHAR(39)+' and status !='+char(39)+'正在值班'+CHAR(39)+' and'+CHAR(32)
+@cboFieldA+@cboOperatorA+CHAR(39)+@txtContentA +CHAR(39)
if @cboRelationA!=''
begin
set @strText=@strText+@cboRelationA+CHAR(32)+
@cboFieldB+@cboOperatorB+CHAR(39
)+@txtContentB+CHAR(39)
end
if @cboRelationB!=''
begin
set @strText=@strText+@cboRelationB+CHAR(32)+
@cboFieldC+@cboOperatorC+CHAR(39)+@txtContentC+CHAR(39)
end
execute(@strText)
END
E---实体层写法如下:
'**********************************************
'文 件 名: GroupQueryEntity
'命名空间: Entity
'内 容:
'功 能: 组合查询
'文件关系:
'作 者:丁国华
'小 组:宝贝计划
'生成日期: 2014/7/31 21:33:57
'版本号:V2.0
'修改日志:
'版权说明:
'**********************************************
Public Class GroupQueryEntity
'''
''' 组合查询用到的一系列实体
'''
'''
Private _cboFieldA As String
Public Property cboFieldA() As String
Get
Return _cboFieldA
End Get
Set(value As String)
_cboFieldA = value
End Set
End Property
Private _cboOperatorA As String
Public Property cboOperatorA() As String
Get
Return _cboOperatorA
End Get
Set(value As String)
_cboOperatorA = value
End Set
End Property
Private _txtContentA As String
Public Property txtContentA() As String
Get
Return _txtContentA
End Get
Set(value As String)
_txtContentA = value
End Set
End Property
Private _cboRelationA As String
Public Property cboRelationA() As String
Get
Return _cboRelationA
End Get
Set(value As String)
_cboRelationA = value
End Set
End Property
Private _cboFieldB As String
Public Property cboFieldB() As String
Get
Return _cboFieldB
End Get
Set(value As String)
_cboFieldB = value
End Set
End Property
Private _cboOperatorB As String
Public Property cboOperatorB() As String
Get
Return _c