首页 新闻 搜索 专区 学院

请教一个 存储过程 where 条件 if判断的问题?

0
[已解决问题] 解决于 2012-11-17 15:04

存储过程 if 判断如何写

 

where 后面  如果有一个参数,非空,则添加上,怎么写的?

问题补充:

delete from SIS_ZZ_JZJXJJFQRB jxj where jxj.xnd = v_xnd and (
jxj.xq = decode( v_xq,NULL,1,v_xq) or
jxj.xq = decode( v_xq,NULL,2 ,v_xq) or
jxj.xq = decode( v_xq,NULL,3 ,v_xq) or
jxj.xq = decode( v_xq,NULL,4 ,v_xq) or
jxj.xq = decode( v_xq,NULL,5 ,v_xq) or
jxj.xq = decode( v_xq,NULL,6 ,v_xq) );

 

我想要的是这样的效果,因为不想拼凑sql。  因为是在定义游标时,写的sql 所以拼凑语句比较复杂。

现在的语句意思是, 当 v_xq = null 时, 删除 jxj.xq in(1,2,3,4,5,6) 的值。

如果 v_xq = 1 时, 只删除1。

 

也可以换成 jxj.xq in(

decode( v_xq,NULL,1,v_xq) ,

decode( v_xq,NULL,2,v_xq),

decode( v_xq,NULL,3,v_xq) ,

decode( v_xq,NULL,4,v_xq),

decode( v_xq,NULL,6,v_xq) 

)

不经意的回眸的主页 不经意的回眸 | 菜鸟二级 | 园豆:228
提问于:2012-11-16 10:31
< >
分享
最佳答案
0

declare @sql varchar(2000),@param varchar(50)

set @param = '参数值'

set @sql='select * from 表 where 1=1'

if len(@param)>0  

  set @sql = @sql + 'and 字段=‘’‘ + @param + ’‘’'

exec(@sql)

奖励园豆:5
Rich.T | 老鸟四级 |园豆:3440 | 2012-11-16 11:44
其他回答(2)
0

declare @sql varchar(2000);

if(@str!="")

begin

  @sql = @sql + @str;

end

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-16 11:04
0

楼上正解,比较简单

卒子 | 园豆:588 (小虾三级) | 2012-11-16 15:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册