• 多条件查询存储过程


     多条件查询存储过程 例一
    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

     

  • 相关阅读:
    聊聊mysql中的int(1)
    如何有效防止sql注入
    微信小程序WXML页面常用语法(讲解+示例)
    Spring Boot 2.x基础教程:使用集中式缓存Redis
    基于.NetCore3.1系列 —— 日志记录之自定义日志组件
    精讲RestTemplate第10篇-使用代理作为跳板发送请求
    使用Java API进行tar.gz文件及文件夹压缩解压缩
    精讲RestTemplate第9篇-如何通过HTTP Basic Auth认证
    精讲RestTemplate第8篇-请求失败自动重试机制
    精讲RestTemplate第7篇-自定义请求失败异常处理
  • 原文地址:https://www.cnblogs.com/yan2007/p/1257944.html
Copyright © 2020-2023  润新知