首页 > 解决方案 > SQL SERVER 中全局 SQL 临时表的条件重用

问题描述

我试图在多个地方重用 SQL SERVER 存储过程中的临时表,以从三个可能的数据库收集数据并将数据插入两个目标数据库之一。这可以做到吗?

场景是我想根据参数查询 3 个可能的数据库中的 1 个,将收集到的数据插入到临时表中,然后检索它以在两个目标表之一的插入语句中使用。插入将再次依赖于参数。我将在报告解决方案 (SSRS) 中使用这两个表。该报告将比较这两个表以识别差异。我知道我可以把它全部写下来,但我试图保持代码的可管理性

一些示例代码

Declare @Switch varchar(11)='A'
Declare @Target varchar(11)='1'

--create tables
Create Table TargetTable1 (Date datetime)
Create Table TargetTable2 (Date datetime)

If @Switch ='A' 
Begin 
    Drop Table ##TestTemp
    --pull data from database 1
    Select GETDATE() Date into ##TestTemp
End

If @Switch <>'B'
Begin
    Drop Table ##TestTemp
    --pull data from database 2
    Select dateadd(d,10,GETDATE()) Date into ##TestTemp
End

If @Target=1 
Begin
    Insert Into TargetTable1
    select * from ##TestTemp 
End
If @Target<>'1'

Begin
    Insert Into TargetTable2
    select * from ##TestTemp 
End

当我尝试时,我得到

消息 2714,级别 16,状态 1,第 19 行数据库中已经有一个名为“##TestTemp”的对象。

谢谢

标签: sql-serverstored-procedures

解决方案


推荐阅读