我在这里遇到了僵局,问题是我必须改变一个使用3个不同临时表的过程.让我们为了对话,将它们命名为#temptable1,#temptable2,#temptable3.
我不能在这里复制/粘贴整个过程,但总体思路是这样的,原始过程(procedure1)在过程的最开始创建#temptable1
我不能在这里复制/粘贴整个过程,但总体思路是这样的,原始过程(procedure1)在过程的最开始创建#temptable1
- create table #temptable1
然后使用select / into语句创建剩下的两个
- select T.Col,T.Col2,T.Col3
- into #temptable2
- from table1 T
- where T.BB>0
- select T.Col,T.Col3
- into #temptable3
- from table2 T
- where T.BB>0
- drop table #temptable1
- drop table #temptable2
- drop table #temptable3
在此之前它工作正常,但我想要做的是通过添加if / else语句来改变过程.因此,看起来像那样,
- declare @BBB nvarchar(32)
- create table #temptable1
- if @BBB='dd'
- begin
- select T.Col,T.Col3
- into #temptable2
- from table1 T
- where T.BB>0 and T.G='FDL'
- select T.Col,T.Col3
- into #temptable3
- from table2 T
- where T.BB>0 and T.G='FDL'
- drop table #temptable1
- drop table #temptable2
- drop table #temptable3
- end
- if @BBB='kk'
- begin
- select T.Col,T.Col3
- into #temptable2
- from table1 T
- where T.BB>0 and T.G='FD'
- select T.Col,T.Col3
- into #temptable3
- from table2 T
- where T.BB>0 and T.G='FD'
- drop table #temptable1
- drop table #temptable2
- drop table #temptable3
- end
- else
- begin
- select T.Col,T.Col3
- into #temptable2
- from table1 T
- where T.BB>0
- select T.Col,T.Col3
- into #temptable3
- from table2 T
- where T.BB>0
- drop table #temptable1
- drop table #temptable2
- drop table #temptable3
- end
当我尝试创建新程序时,我收到此消息,
- Msg 2714,Level 16,State 1,Procedure pPortfoliostest3,Line 412
- There is already an object named '#temptable1' in the database.
- Msg 2714,Line 550
- There is already an object named '#temptable2' in the database.
- Msg 2714,Line 711
- There is already an object named '#temptable3' in the database.
这些行指示临时表在第二个if语句中的位置(如果@ BBB =’kk’).
我尝试了不同的组合但无济于事.有小费吗?感谢您的时间.