我想这样做:
DECLARE @str varchar(max)
DECLARE @cnt bigint
set @str= 'where column=value'
set @cnt= (select count(*) from user+@str)
但是where子句不起作用。没有错误,但它会忽略where条件。
答案 0 :(得分:2)
我之前曾建议在EXEC()
中包装您的最后一行,但您无法执行此操作并将结果返回给变量。为此,请使用以下代码替换最后一行:
create table #temp (theCount int)
insert into #temp EXEC('select count(*) from Photos '+@str)
set @cnt= (select top 1 theCount from #temp)
drop table #temp
答案 1 :(得分:1)
检查下面的代码,在你的情况下条件是动态的,所以你需要动态的sql。
DECLARE @sSQL nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @str nvarchar(500);
set @str= 'where column=value'
SELECT @sSQL = N'SELECT @retvalOUT = COUNT(*) FROM user '+ @str +' ' ;
SET @ParmDefinition = N'@retvalOUT int OUTPUT';
EXEC sp_executesql @sSQL, @ParmDefinition, @retvalOUT=@retval OUTPUT;
SELECT @retval;
答案 2 :(得分:0)
使用execute sql语法http://technet.microsoft.com/en-us/library/ms188001.aspx
希望这能解决您的问题