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