从exec返回值(@sql)

sre*_*th 46 sql t-sql sql-server sql-server-2005

我想从中获取值Exec(@sql)并分配给@Rowcount(int)

这是我的查询:

'SET @RowCount = (select count(*) 
                    FROM dbo.Comm_Services 
                   WHERE CompanyId = '+cast(@CompanyId as char)+' and '+@condition+')'
Run Code Online (Sandbox Code Playgroud)

Man*_*org 89

一方面你可以使用sp_executesql:

exec sp_executesql N'select @rowcount=count(*) from anytable', 
                    N'@rowcount int output', @rowcount output;
Run Code Online (Sandbox Code Playgroud)

另一方面,您可以使用临时表:

declare @result table ([rowcount] int);
insert into @result ([rowcount])
exec (N'select count(*) from anytable');
declare @rowcount int = (select top (1) [rowcount] from @result);
Run Code Online (Sandbox Code Playgroud)

  • @Zamir `@result` 是一个表变量,而不是临时表,因此无需删除它。事实上,您无法删除它,就像您无法删除任何其他变量(例如整数)一样。 (3认同)
  • 非常好!除了在 SQL 2016 中,这给出了“关键字‘rowcount’附近的语法不正确”。似乎 ROWCOUNT 是一个保留标识符。搜索并将 rowcount 替换为 row_count 效果很好。谢谢你。 (2认同)