我有一个多线程应用程序。
每个线程执行存储过程,我在其中创建本地临时表。
临时表的名称相同:#TempTable
线程在操作此#TempTable
如何为每个具有相同名称的线程制作#TempTable
?
答案 0 :(得分:1)
答案 1 :(得分:1)
只要多个线程使用单独的连接(我真的希望它们是这样,否则可能没有多线程的好处,或者你的代码中隐藏着大量的竞争条件),它们都应该有自己的副本临时表。你不应该做任何其他事情。
答案 2 :(得分:-1)
#TempTable temporary table应仅可用于当前的SQL Server会话/连接,因此如果您希望每个进程都有一个单独的#TempTable,则只需为每个进程使用单独的连接。 如果这不可行,你可以使用表变量,它们在常规表和变量之间有点交叉 - 就像这样:
DECLARE @TableVar TABLE (
IDColumn int,
NameColumn varchar(max))
INSERT INTO @TableVar (IDColumn, NameColumn)
SELECT ID, Name
FROM RealTable
WHERE .....
但是,如果您希望所有进程都使用同一个表,只需使用双哈希(## TempTable)命名,然后全局访问它。