日期:2014-05-18 浏览次数:20578 次
ALTER proc DingDan_GetCount @VIPID varchar(50),@ShopID int as begin declare @where varchar(1000),@SQl varchar(1000) if(len(@VIPID)>0) set @where=' VIP_ID='+@VIPID+' and' if(@ShopID>0) set @where=@where+' Shop_ID='+@ShopID+' and' if(len(@where)>0) Set @where=' where '+substring(@where,0,len(@where)-3) set @SQL = 'select count(*) from DingDan'+@where--为什么执行了这步了 exec(@SQL)--这里的@SQL还是为空没有值? end
ALTER proc DingDan_GetCount @VIPID varchar(50),@ShopID int as begin declare @where varchar(1000),@SQl varchar(1000) if(len(@VIPID)>0) set @where=' and VIP_ID='+@VIPID if(@ShopID is not null) set @where=' and Shop_ID='+ltrim(@ShopID) if(len(@where)>0) set @SQL = 'select count(*) from DingDan where 1=1 '+@where--为什么执行了这步了 exec(@SQL)--这里的@SQL还是为空没有值? end
------解决方案--------------------
ALTER proc DingDan_GetCount @VIPID varchar(50),@ShopID int as begin declare @where varchar(1000),@SQl varchar(1000) if(len(@VIPID)>0) set @where=' VIP_ID='+@VIPID+' and' if(@ShopID>0) set @where=@where+' Shop_ID='+@ShopID+' and' /* 1、@where如果没有值,即NULL那么这个set后@where依旧是NULL,即时@ShopID有值。 2、拼字符串时注意数据类型,@ShopId是int型。 */ if(len(@where)>0) Set @where=' where '+substring(@where,0,len(@where)-3) set @SQL = 'select count(*) from DingDan'+@where--为什么执行了这步了 exec(@SQL)--这里的@SQL还是为空没有值? end
------解决方案--------------------
--按楼主的可以这么改试试。 ALTER proc DingDan_GetCount @VIPID varchar(50),@ShopID int as begin declare @where varchar(1000),@SQl varchar(1000) if(len(@VIPID)>0) set @where=' VIP_ID='+@VIPID+' and ' if(@ShopID>0) set @where=isnull(@where,'')+' Shop_ID='+ltrim(@ShopID)+' and' if(len(@where)>0) Set @where=' where '+substring(@where,0,len(@where)-3) set @SQL = 'select count(*) from DingDan '+isnull(@where,'')--为什么执行了这步了 exec(@SQL)--这里的@SQL还是为空没有值? end