我存储过程里想实现多个传入参数的判断,里面有7个传入参数条件.

CREATE PROCEDURE sp_tbWasteSource_Search

(

@sd   datetime,           //开始日期

@ed   datetime,           //结束日期

@con1 varchar(50),

@con2 varchar(30),

@con3 varchar(5),

@con4  varchar(10),

@con5 varchar(4)

)

AS

declare @sql varchar(1000)

begin

set @sql='SELECT * FROM table '

if  @sd!='' and @ed!=''

begin

set @sql=@sql+' where CosID= '+cast(@CosID as varchar)

end

if (@CosName!= '' and @CosID!='')

begin

set @sql=@sql+'and'+'  CosName=  '+cast (@CosName as varchar )

end

else

if (@CosName!='' and @CosID ='')

begin

set @sql=@sql+'where '+'  CosName=  '+cast (@CosName as varchar )

end

if @CosCredit!= '' and (@CosID!='' or @CosName!='')

begin

set @sql=@sql+' and  CosCredit=  '+cast (@CosCredit as varchar )

end

else

if @CosCredit!='' and @CosID=''and @CosName=''

set @sql=@sql+'where CosCredit= '+cast (@CosCredit as varchar )

exec (@sql)

end

GO

无论是ADO.NET还是存储过程的组合查询的SQL语句编写方式:select * from temp where (@ServerID='' or ServerID=@ServerID) and (@SName='' or SName=@SName)

SqlParameter param=new SqlParameter("@ServerID",ServerID==-1?String.Empty:ServerID.ToString());//这里的ServerID传递过来是int类型,如果为-1,那么查询全部,传递空串即可,否则传递ServerID,数据库会自动将@ServerID的值转换为int

SqlParameter param=new SqlParameter("@SName",SName); //字符串直接传参数即可,因为可以为空串String.Empty

以下为参考:

CREATE PROCEDURE sp_tbWasteSource_Search

(

@sd datetime=null, //开始日期

@ed datetime=null, //结束日期

@con1 varchar(50),

@con2 varchar(30),

@con3 varchar(5),

@con4 varchar(10),

@con5 varchar(4)

)

as

begin

select * from tb

where (@sd is null or date>@sd) and (@ed is null or date

end

SELECT * FROM table_name

where ((@sd is null and @ed is null) or (sd >= @sd and ed <= @ed)) --sd和ed都是空时,此条件总为true,否则相当于sd >= @sd and ed <= @ed

and (@con1 is null or con1 = @con1) --如果@con1不传值,则此行条件总为true;如果传值,则此行为and con1=@con1

and (@con2 is null or con2 = @con2) --同con1

and (@con3 is null or con3 = @con3) --同con1

and (@con4 is null or con4 = @con4) --同con1

and (@con5 is null or con5 = @con5) --同con1

SELECT * FROM table

where 1=1

and sd>= case when @sd is not null when @sd else sd end

and ed<= case when @ed is not null when @ed else ed end

and CosID= case when @CosID is not null when @CosID else CosID end

and CosName= case when @CosName is not null when @CosName else CosName end

and .....

mysql存储过程判断多个条件语句_存储过程里多条件判断(SQL组合查询)相关推荐

  1. python控制语句中的条件语句_『Python』条件控制语句

    Loading... ## 1. 条件语句 ``` Python条件语句是通过一条或者多条语句的执行结果(True或False)来决定执行的代码块. ``` ``` 在Python中, 指定任何非0和 ...

  2. java存储过程与sql语句_存储过程与SQL语句怎么选择

    应用存储过程的优点: 1.具有更好的性能 存储过程是预编译的,只在创建时进行编译,以后每次执行存储过程都不需再重新编译, 而一般 SQL 语句每执行一次就编译一次,因此使用存储过程可以提高数据库执行速 ...

  3. mysql常量,变量,循环语句,存储过程,触发器,分隔符

    常量:参与运算给变量赋值 字符串:用成对的单引号/双引号括起来 数值型:二进制,十进制,八进制,十六进制 日期时间:年-月-日-时-分-秒-微妙 布尔值:ture/false[1/0] null:未知 ...

  4. python编程的条件语句_自学Python编程【第五节】if条件语句

    我们已经能让程序程序判断我们输入的值了,但这程序还是有点呆,不管怎样都要把话说三遍.因为到目前为止,我们的程序都是按照顺序从上到下一行接一行地执行.有同学发来问题了:怎么能让它根据我们输入的结果来选择 ...

  5. js 使用多态替换条件语句_用多态和组成替换多个条件

    js 使用多态替换条件语句 用多态替换条件语句是一种众所周知的重构模式. 如果您不熟悉该模式,可以在此处查看 . 但是,一旦类中有多个条件检查所基于的字段,该基本解决方案便会开始崩溃. 我们将研究一些 ...

  6. 循环语句与条件语句_在PHP中混合条件语句和循环

    循环语句与条件语句 As mentioned earlier, the looping statement is executing a particular code as long as a co ...

  7. matlab条件语句怎么写,matlab if 条件语句 用法以及实例是什么

    MATLAB中我们常常用到条件判断语句结构,通过实例介绍这个结构的用法: 1.if..end结构,运行下面的句子,此条件语句是判断5是否大于3,如果大于3,就将1赋值给: 2.if.elseend 结 ...

  8. c语言条件语句示例_PHP中的条件语句和示例

    c语言条件语句示例 PHP条件语句 (PHP Conditional Statements) While coding, you may get to a point where your resul ...

  9. mysql存储过程参数与属性同名问题_存储过程中参数与表名相同的二义性问题

    写了一个很简单的存储过程,发现执行了,但是表的数据没有改变,存储过程如下: procedure sp_upd_update_jsgl(mc in varchar2,--名称 sm in varchar ...

最新文章

  1. python就业方向及工资-Python的就业方向有哪些?
  2. 存储引擎之必知必会 -- 检查点机制
  3. 2016-2017NBU期末考试记录
  4. gradle构建springboot项目瘦身,外部依赖jar的终极方法
  5. 致敬那些用键盘改变世界的劳动者
  6. python多态_记录学习python第9天-继承/多态
  7. linux一次性密码确保ssh登录安全,使用 SSH 时确保 EC2 Linux 实例安全的最佳实践
  8. 虚继承 - C++快速入门29
  9. 《信号与系统学习笔记》—信号与系统(三)
  10. Intelligent driver model(IDM)
  11. 快捷指令快速保存无水印视频和图集
  12. 永不消失的电波 2020.12.07
  13. android icon psd,60个PSD格式的ICON和按钮模板
  14. c语言面试题下载,C语言笔试题A.doc
  15. 运动估计和最佳匹配块搜索算法
  16. centos下zip压缩解压缩命令
  17. AccuWeather天气预报应用介绍
  18. Mat矩阵操作,C++
  19. 【转】什么是WTW Wi-Fi 6(802.11ax)解析18:TWT节能机制(Target Wake Time)
  20. Android带三角形的弹窗,andriod开发 利用.9图制作带三角形指示的popwindow弹窗

热门文章

  1. 关于System.AccessViolationException异常
  2. macOS Catalina下RX580/Vega系列显卡启动后DP输出黑屏和ALC1220声卡无法驱动的解决方案
  3. 解决select2在bootstrap的modal中默认不显示的问题
  4. mysql中CONCAT值为空的问题解决办法
  5. Chrome浏览器showModalDialog兼容性及解决方案
  6. SourceTree/git解决pre-commit hook failed的问题
  7. 为什么jQuery或诸如getElementById之类的DOM方法找不到元素?
  8. REST和RESTful有什么区别
  9. php和fastapi,FastAPI快速开始
  10. nbi可视化_2020最受欢迎的5个数据可视化工具分享