我写了一个存储过程,其中有一个语句如下
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
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
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+''')
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+''')
--這一句你是如何執行的?
这个语句本身不就执行了吗?后面是select 语句啊