【发布时间】:2010-11-26 16:36:19
【问题描述】:
在 SQL Server 2008 中,我有一个执行复杂查询的存储过程。我会将结果写入临时表(不是系统临时表,而是手动管理的)。
表的名称是用户的网络会话 ID 的字符串表示形式。这解决了并发问题。这将传递给将创建表的存储过程。为了清理,该名称将与时间戳一起记录在维护表中。
然而,这个名字显然是动态的。我不想使用动态 SQL,因为这会排除复杂查询的任何编译。我知道这是在推动事情,但我想做的是如下:
DECLARE @TableName varchar(100)
SET @TableName = CAST(@SessionID AS varchar)
INSERT INTO @TableName
SELECT....{complex query}
我该怎么做?
更多信息:
记录集可能有数万行(仅限 ID)。用户可以对这个记录集应用进一步的过滤,从而减少它。因此它必须是服务器上的一个表。
【问题讨论】:
标签: sql-server stored-procedures dynamic-sql