hur.cn - 华软网

 热门搜索

关于存储过程条件判断的问题

  作者:未知    来源:网络    更新时间:2018/11/9
我想在存储进程中判断一个条件是否建立:
if exists (select 1 from d_swdjb where id_nsr = @id_nsr and (id_nsrzt = '10' or id_nsrzt = '20') 

if exists (select 1 from s_jksjl where id_nsr = @id_nsr and date_slrq between @qsrq and @zzrq )

我想将这两个if exists 合成一个即只有一个if exists(),不知道上面这两个怎么合成?
------华软网友回答------
if (exists (select 1 from d_swdjb where id_nsr = @id_nsr and (id_nsrzt = '10' or id_nsrzt = '20') 
or
exists (select 1 from s_jksjl where id_nsr = @id_nsr and date_slrq between @qsrq and @zzrq )
)
应该能够吧?

------华软网友回复------
to :daixf_csdn(圣殿骑士)
按你写的确实能够了!
另有一个疑问:第二个判断如果要求是id_nsrzt 是非10和20的,联合在一起写,有没有更简洁的写法了?
------华软网友回复------
直接写吧,效率一样的
select 1 from s_jksjl where id_nsr = @id_nsr and id_nsr<> 10 and date_slrq between @qsrq and @zzrq
------华软网友回复------
to ruky9988(ruky) :
前后两个判断的表不一样啊,第一个是d_swdjb,后一个是s_jksjl。
我整个判断的意思是:判断id_nsr在d_swdjb中的id_nsrzt 是否是10和20,如果有非10和20的再到s_jksjl中找有没有数据。

两个联合起来写,除上面的,不知道另有什么方法!
------华软网友回复------
不知道这样写可不能够:
if exists (select 1 from d_swdjb where id_nsr = @id_nsr and (id_nsrzt = '10' or id_nsrzt = '20') )
then
......
else if exists (select 1 from s_jksjl where id_nsr = @id_nsr and date_slrq between @qsrq and @zzrq )
.....
end

------华软网友回复------
我整个判断的意思是:判断id_nsr在d_swdjb中的id_nsrzt 是否是10和20,如果有非10和20的再到s_jksjl中找有没有数据。
------------------
如果按你这个意思,你楼顶的写法就是错的,应该写为:
if ( not exists (select 1 from d_swdjb where id_nsr = @id_nsr and (id_nsrzt = '10' or id_nsrzt = '20') 
and
exists (select 1 from s_jksjl where id_nsr = @id_nsr and date_slrq between @qsrq and @zzrq )
)
     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。