不要在结果中显示动态查询

时间:2010-04-08 15:19:41

标签: sql sql-server-2005 tsql

是否可以从存储过程提供的结果集中隐藏动态查询?

我正在使用动态查询的@@rowcount设置一个变量,用于确定是否运行另一个查询。

另一个查询由我无法更改的代码使用 - 因此我更改存储过程的原因。动态查询返回,因为存储过程中的第一个结果集现在是动态查询的结果,当前正在“破坏”调用代码。

提前致谢

2 个答案:

答案 0 :(得分:2)

我设法通过将动态查询的结果插入临时表然后从临时表中检索rowcount来解决此问题。

-- Create query
declare @query nvarchar(max)
set @query = 'select ' + @entityname + 'id from ' + @entityname + ' where ' + @entityname + 'id = ' + cast(@entityid as nvarchar(100))

-- Insert into to temp table - no new result set displayed!
declare @tbl table (EntityID int not null primary key)
insert into @tbl
    exec (@query)

-- Retrieve variable from temporary table
declare @count int
select @count = count(*) from @tbl

以上是我最终使用的代码。

答案 1 :(得分:0)

尝试包装动态查询,如下所示:

Set @query = 'SELECT COUNT(*) FROM (' + @Query + ') t'