多条件查询存储过程 例一
create proc pr_select_Natural ( @CDATE datetime, @FAC_NAME varchar(50), @BATTERY_TYPE varchar(20), @MAKE_MODE varchar(20), @PRODUCE_MODE varchar(20), @YEAR char(4), @MONTH char(2), @TDATE datetime, @PAGENUM varchar(12) ) as declare @strWhere varchar(500) if ( @CDATE = null ) set @strWhere = @strWhere+' and CDATE ='+ @CDATE if ( @FAC_NAME = null ) set @strWhere = @strWhere+' and FAC_NAME like ''%''+@FAC_NAME+''%'' ' if ( @BATTERY_TYPE = null ) set @strWhere = @strWhere+' and BATTERY_TYPE like ''%''+@BATTERY_TYPE+''%''' if ( @MAKE_MODE = null ) set @strWhere = @strWhere+' and MAKE_MODE like ''%''+@MAKE_MODE+''%''' if ( @PRODUCE_MODE = null ) set @strWhere = @strWhere+' and PRODUCE_MODE like ''%''+@PRODUCE_MODE+''%''' if ( @YEAR = null ) set @strWhere =@strWhere+ ' and YEAR like ''%''+@YEAR+''%''' if ( @MONTH = null ) set @strWhere = @strWhere+' and MONTH like ''%''+@MONTH+''%''' if ( @TDATE = null ) set @strWhere = @strWhere+' and TDATE = @TDATE' if ( @PAGENUM = null ) set @strWhere = @strWhere+' and PAGENUM like ''%''+@PAGENUM+''%''' set @strMAIN = 'select CDATE as 出厂时间, FAC_NAME as 发货厂家, BATTERY_TYPE as 电池型号, SEND_TYPE as 发货类型, SEND_NUM as 检测数量, MAKE_MODE as 制作方式, PRODUCE_MODE as 生产方式, BATTERY_NUM as 电池组数量, [YEAR] as 年, [MONTH] as 月, TDATE as 日期, SEND_RULE as 发货规则, SEND_CODE as 发货组编号, BATTERY_SORT as 电池类别, PAGENUM as 条码号, FITTING_CODE as 装配号, LINE_CODE as 生产机号, FLAG as 是否放行, REMARK as 备注, OTHER as 其他, BLANK_COL as 空白列 from T_INFOCODE_NATURAL where 1=1 ' +@strWhere exec(@strMAIN)
多条件查询存储过程 例二
------------表中的字段--------------- CREATE TABLE [dbo].[stuInfo] ( [FNumber] [int] IDENTITY(1,1) NOT NULL , [FName] [nvarchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL , [FNameen] [varchar] (35) COLLATE Chinese_PRC_CI_AS , [FSex] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL , [FEducation] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL , [FCardID] [char] (18) COLLATE Chinese_PRC_CI_AS NOT NULL , [FBirDate] [datetime] NOT NULL , [FTech] [nvarchar](50) COLLATE Chinese_PRC_CI_AS , [FSubject] [nvarchar](50) COLLATE Chinese_PRC_CI_AS, [FJiF] [nvarchar](100)COLLATE Chinese_PRC_CI_AS, [FJobAdd][nvarchar](100)COLLATE Chinese_PRC_CI_AS, [FExamNum][varchar](30)COLLATE Chinese_PRC_CI_AS NOT NULL, [FServerNum] [varchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL , [FExamDate] [datetime] NOT NULL , [FIsAE] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY] GO ----------存储过程------------------------- IF EXISTS(SELECT *FROM SYSOBJECTS WHERE NAME='PROC_Look') DROP PROC PROC_Look GO CREATE PROC PROC_Look @FName NVARCHAR(30)=NULL, @FNameen VARCHAR(35)=NULL, @FCardID CHAR(18)=NULL, @FExamNum NVARCHAR(30)=NULL, @FServerNum NVARCHAR(30)=NULL, @FSex CHAR(1)=NULL, @FEducation CHAR(1)=NULL, @FIsAE CHAR(1)=NULL, @FTech NVARCHAR(50)=NULL, @FSubject NVARCHAR(50)=NULL, @FJiF NVARCHAR(100)=NULL, @FJobAdd NVARCHAR(100)=NULL, @FStartTime DATETIME=NULL, @FEndTime DATETIME=NULL AS declare @sqlStr varchar(100) if @FName IS NOT NULL begin set @sqlStr=' where FName='+''''+@FName+'''' end if @FNameen IS NOT NULL begin if @sqlStr IS NOT NULL set @sqlStr=@sqlStr+' and FNameen='+''''+@FNameen+'''' else set @sqlStr=' where FNameen='+''''+@FNameen+'''' end if @FCardID IS NOT NULL begin if @sqlStr IS NOT NULL set @sqlStr=@sqlStr+' and FCardID='+''''+@FCardID+'''' else set @sqlStr=' where FCardID='+''''+@FCardID+'''' end if @FExamNum IS NOT NULL begin if @sqlStr IS NOT NULL set @sqlStr=@sqlStr+' and FExamNum='+''''+@FExamNum+'''' else set @sqlStr=' where FExamNum='+''''+@FExamNum +'''' end if @FServerNum IS NOT NULL begin if @sqlStr IS NOT NULL set @sqlStr=@sqlStr+' and FServerNum='+''''+@FServerNum+'''' else set @sqlStr=' where FServerNum='+''''+@FServerNum+'''' end if @FSex IS NOT NULL begin if @sqlStr IS NOT NULL set @sqlStr=@sqlStr+' and FSex='+''''+@FSex+'''' else set @sqlStr=' where FSex='+''''+@FSex+'''' end if @FEducation IS NOT NULL begin if @sqlStr IS NOT NULL set @sqlStr=@sqlStr+' and FEducation='+''''+@FEducation+'''' else set @sqlStr=' where FEducation='+''''+@FEducation+'''' end if @FIsAE IS NOT NULL begin if @sqlStr IS NOT NULL set @sqlStr=@sqlStr+' and FIsAE='+''''+@FIsAE+'''' else set @sqlStr=' where FIsAE='+''''+@FIsAE+'''' end if @FTech IS NOT NULL begin if @sqlStr IS NOT NULL set @sqlStr=@sqlStr+' and FTech='+''''+@FTech+'''' else set @sqlStr=' where FTech='+''''+@FTech+'''' end if @FSubject IS NOT NULL begin if @sqlStr IS NOT NULL set @sqlStr=@sqlStr+' and FSubject='+''''+@FSubject+'''' else set @sqlStr=' where FSubject='+''''+@FSubject +'''' end if @FJiF IS NOT NULL begin if @sqlStr IS NOT NULL set @sqlStr=@sqlStr+' and FJiF='+''''+@FJiF+'''' else set @sqlStr=' where FJiF='+''''+@FJiF+'''' end if @FJobAdd IS NOT NULL begin if @sqlStr IS NOT NULL set @sqlStr=@sqlStr+' and FJobAdd='+''''+@FJobAdd +'''' else set @sqlStr=' where FJobAdd='+''''+@FJobAdd +'''' end EXEC('select *from stuInfo '+ @sqlStr) GO