首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存储过程中使用IF.ELSE报错解决办法

2012-03-21 
存储过程中使用IF...ELSE报错if (@commit_rsall)and EnterpriseId in(select EnterpriseId from T_Cond

存储过程中使用IF...ELSE报错
if (@commit_rs='all')
and EnterpriseId in(select EnterpriseId from T_ConductResult)
else
and EnterpriseId in(select EnterpriseId from T_ConductResult where ConductId=@commit_rs)
if (@playcount<>'0') 
and adid in (SELECT adid FROM T_Result group by adid having count(adid)>@playcount)
)tt
GROUP BY ADNAME,TYPENAME,CheckName,CheckEnterprise,IsSex,channelname

以上是存储过程的一个片断,以下是报的错误

服务器: 消息 156,级别 15,状态 1,过程 NewsPaperReport8,行 49
在关键字 'if' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,过程 NewsPaperReport8,行 51
在关键字 'else' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 NewsPaperReport8,行 55
第 55 行: ')' 附近有语法错误。

大家给看一下,问题出在哪了

[解决办法]
if没问题,后面的就问题大了,不能这么写
[解决办法]

SQL code
declare @sql nvarchar(max)set @sql='select .......from.......'if (@commit_rs='all') set @sql=@sql+' and EnterpriseId in(select EnterpriseId from T_ConductResult)'else set @sql=@sql+' and EnterpriseId in(select EnterpriseId from T_ConductResult where ConductId='+@commit_rs+')'if (@playcount<>'0')   set @sql=@sql+' and adid in (SELECT adid FROM T_Result group by adid having count(adid)>'+@playcount+'))tt'set @sql=@sql+' GROUP BY ADNAME,TYPENAME,CheckName,CheckEnterprise,IsSex,channelname'exec(@sql)
[解决办法]
探讨
SQL code
declare @sql nvarchar(max)
set @sql='select .......from.......'
if (@commit_rs='all')
set @sql=@sql+' and EnterpriseId in(select EnterpriseId from T_ConductResult)'
else
set @sql=@sql……

热点排行
Bad Request.