我写了一个存储过程,其中有一个语句如下
SET @req=(SELECT ISNULL(COUNT(ID),0) FROM VIEW_Member_Stat WHERE BizType='+CAST(@j AS Nvarchar(2))+' AND IsAppr=0 AND ApprDate IS NULL AND IsDel=0 AND '+@GroupBy+' = '''+@period+''')
但是就是得不到值,而在查询分析器里执行sql语句,是有值的。
为什么只有通过如下方法才能获取值呢?
set @sql = 'SELECT @req=ISNULL(COUNT(ID),0) FROM VIEW_Member_Stat WHERE BizType='+CAST(@j AS Nvarchar(2))+' AND IsAppr=0 AND ApprDate IS NULL AND IsDel=0 AND '+@GroupBy+' = '''+@period+''''
exec sp_executesql @sql,N'@req int out',@req out

解决方案 »

  1.   

    try:
    declare @req varchar(8000)set @req=''SET @req=(SELECT ISNULL(COUNT(ID),0) FROM VIEW_Member_Stat WHERE BizType='+CAST(@j AS Nvarchar(2))+' AND IsAppr=0 AND ApprDate IS NULL AND IsDel=0 AND '+@GroupBy+' = '''+@period+''')
      

  2.   

    set @sql = 'SELECT @req=ISNULL(COUNT(ID),0) FROM VIEW_Member_Stat WHERE BizType='+CAST(@j AS Nvarchar(2))+' AND IsAppr=0 AND ApprDate IS NULL AND IsDel=0 AND '+@GroupBy+' = '''+@period+''''
    exec sp_executesql @sql,N'@req int out',@req out
    --這樣執行動態SQL是對的SET @req=(SELECT ISNULL(COUNT(ID),0) FROM VIEW_Member_Stat WHERE BizType='+CAST(@j AS Nvarchar(2))+' AND IsAppr=0 AND ApprDate IS NULL AND IsDel=0 AND '+@GroupBy+' = '''+@period+''')
    --這一句你是如何執行的?
      

  3.   

    SET @req=(SELECT ISNULL(COUNT(ID),0) FROM VIEW_Member_Stat WHERE BizType='+CAST(@j AS Nvarchar(2))+' AND IsAppr=0 AND ApprDate IS NULL AND IsDel=0 AND '+@GroupBy+' = '''+@period+''')
    这个语句本身不就执行了吗?后面是select 语句啊