條款我想這樣做:使用SQL變量,其中SQL
DECLARE @str varchar(max)
DECLARE @cnt bigint
set @str= 'where column=value'
set @cnt= (select count(*) from [email protected])
但在where子句中是行不通的。沒有錯誤,但它會忽略哪裏的條件。
條款我想這樣做:使用SQL變量,其中SQL
DECLARE @str varchar(max)
DECLARE @cnt bigint
set @str= 'where column=value'
set @cnt= (select count(*) from [email protected])
但在where子句中是行不通的。沒有錯誤,但它會忽略哪裏的條件。
我以前建議將最後一行換成EXEC()
,但是你不能這樣做並將結果返回給一個變量。要做到這一點,請使用以下的地方你的最後一行:
create table #temp (theCount int)
insert into #temp EXEC('select count(*) from Photos '[email protected])
set @cnt= (select top 1 theCount from #temp)
drop table #temp
越來越此錯誤:關鍵字'EXEC'附近的語法不正確。 爲您的線路 – user3410589
使用執行SQL語法http://technet.microsoft.com/en-us/library/ms188001.aspx
希望這將解決您的問題
檢查下面的代碼,你的情況的條件是動態的,所以你需要動態的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, @[email protected] OUTPUT;
SELECT @retval;
這個問題,即一些缺陷看一看強調了答案:http://stackoverflow.com/questions/548090/dynamic-sql-execsql-versus-exec-sp-executesqlsql –