- SQL code
ALTER proc DingDan_GetCount@VIPID varchar(50),@ShopID intasbegindeclare @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
------解决方案--------------------
- SQL code
ALTER proc DingDan_GetCount@VIPID varchar(50),@ShopID intasbegindeclare @where varchar(1000),@SQl varchar(1000)if(len(@VIPID)>0)set @where=' and VIP_ID='+@VIPIDif(@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
------解决方案--------------------
- SQL code
ALTER proc DingDan_GetCount@VIPID varchar(50),@ShopID intasbegindeclare @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
------解决方案--------------------
- SQL code
--按楼主的可以这么改试试。ALTER proc DingDan_GetCount@VIPID varchar(50),@ShopID intasbegindeclare @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