打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
相信成功,就一定会——一个组合查询存储过程 的实现

        看到原来项目的存储过程判断一层套一层,而我则想要尽量简化,于是网查到下面的写法,也是缘分,开始就看到了这个比较简单的写法,但是思路很新颖,用到了coalesce返回其参数中的第一个非空表达式),如果是空,就不返回了。如果不用这个,那么为空的变量也在SQL语句中,将会执行错误。

       最初看到这个代码很高兴,copy来试验,但是确报错,+''' 有错误,于是用了一般的语句,包含了变量,发现字符串变量在SQL中要加上引号:'@bzw  ',如果和其他字符串连接,就要再加', 成为这样:''+@bzw+'',如果外层还有引号,则,这里就变成:'''+@bzw+'''.

      终于好了,时间字段的初值成了问题,最后发现,传入的那个变量其实是个字符串型,不是时间型。

      总算过关!看来,相信自己,从小处开始试验,总能找到强大难题的突破口!!!

ALTER PROCEDURE dbo.HnMessage
(
--是否处理标志,1:已处理
@bzw char(1)=null,

--报警日期
@sasj2begin nvarchar(80)=null,
@sasj2end nvarchar(80)=null,

--报警电话
@barlxdh7 nvarchar(80)=null,

--接电人
@cjr1 nvarchar(50)=null,

--报警类型
@ajly4 nvarchar(200)=null,

--登录用户所在单位
@departname varchar(50)=null

)


AS
declare   @sql   nvarchar(4000)
set   @sql=coalesce(@sql, ' ')+
( '   bzw = '''+@bzw+'''  and ', ' ') +
coalesce( '   sasj2 >= '''+@sasj2begin+'''   and ', ' ')+
coalesce( '   sasj2 <= '''+@sasj2end+'''   and ', ' ')+
coalesce( '   barlxdh7='''+@barlxdh7+ '''   and ', ' ')+
coalesce( '   cjr1='''+@cjr1+ '''   and ', ' ')+
coalesce( '   ajly4='''+@ajly4+ '''   and ', ' ')+coalesce( '   cjdw1 = '''+@departname+'''   or ', ' ')+
coalesce( '   bzw = '''+@bzw+'''  and ', ' ') +
coalesce( '   sasj2 >= '''+@sasj2begin+'''   and ', ' ')+
coalesce( '   sasj2 <= '''+@sasj2end+'''   and ', ' ')+
coalesce( '   barlxdh7='''+@barlxdh7+ '''   and ', ' ')+
coalesce( '   cjr1='''+@cjr1+ '''   and ', ' ')+
coalesce( '   ajly4='''+@ajly4+ '''   and ', ' ')+coalesce( '   cjdw2 = '''+@departname+'''   and ', ' ')

if   len(@sql)> 0   set   @sql= '   where '+left(@sql,len(@sql)-4)
--打印出来自己看吧
print   @sql
set   @sql= 'SELECT [BH0], [ID], [BARXM5], [BARDWHZZ8], [SASJ2], [BARLXDH7],'+
  '[FXSJ10], [AJLY4], [ss_ajdl], [ss_ajnb], [JYAQ39], [duty_name],'+
  '[ldps], [DXCADDMAN], [cjsj2], [cjdw2], [cjsj1], [cjdw1], [ss_ajyy],'+
  '[AJCLQK], [ysbm], [sldw], [CJJG], [SDCJR], [NEW_FADD], [ss_faqy], [cjr1], [cjr2] FROM [DXC_BJAJDJB20] '+@sql
exec(@sql)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
存储过程-SP
SQL Server 存储过程
表值函数
null (空值) 空字符串(‘’)
数据库原理与MySQL应用-5 存储函数与存储过程
DB2代码 错误信息描述
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服