存储过程如下 ALTER PROCEDURE [dbo].[OrderDtil_TechRaty_List]
@Flg int
AS if @Flg = 0
SELECT DetailStaID,MaterialSta,MaitSmitlDate, OrderDetailID into #tempDSta
FROM [DetailSta] WHERE MaterialSta = 1
else
SELECT DetailStaID,MaterialSta,MaitSmitlDate, OrderDetailID into #tempDSta
FROM [DetailSta] WHERE MaitTech = 1
--连接 主表与款式表

select d.OrderID,d.OrderPO,a.Consumption,c.DetailStaID,c.MaterialSta,c.MaitSmitlDate,c.OrderDetailID,
b.StyleName,a.ColorNo,b.StyleCnName,b.EnName,b.CnName, 
 a.DetailCount,a.ShipDate,FabicPrdNum,
a.FabircPS,a.TTLYY,a.CustomerID
 from #tempDSta c join OrderDetail a on c.OrderDetailID = a.OrderDetailID
 join  Style b on a.StyleID = b.StyleID join [Order] d on a.OrderID = d.OrderID
          order by d.OrderID
 
 drop table #tempDSta以上存储过程会报错。 错误 数据库中已存在名为 '#tempDSta' 的对象。
去掉 1个else就好用。请问这里如何解决。临时表。能设置成一个全局变量吗?或者用其他方法解决,谢谢!!!!!!
if @Flg = 0
SELECT DetailStaID,MaterialSta,MaitSmitlDate, OrderDetailID into #tempDSta
FROM [DetailSta] WHERE MaterialSta = 1
else
SELECT DetailStaID,MaterialSta,MaitSmitlDate, OrderDetailID into #tempDSta
FROM [DetailSta] WHERE MaitTech = 1

解决方案 »

  1.   

    同一存储过程的 if else 结构中,不能产生两个同名的临时表.
    临时表可以设置成全局临时表,前面加两个#,但如果存储过程被其他人同时调用的时候,有可能会冲突.
    你可以将与临时表有关的所有操作都放在同一个块中,然后在不同的块中用不同的临时表.
      

  2.   

    加个if判断if object_id('#tempDSta') is not null   drop table #tempDSta...
      

  3.   

    if @Flg = 0
    SELECT DetailStaID,MaterialSta,MaitSmitlDate, OrderDetailID into ##tempDSta
    FROM [DetailSta] WHERE MaterialSta = 1
    else
    SELECT DetailStaID,MaterialSta,MaitSmitlDate, OrderDetailID into ##tempDSta
    FROM [DetailSta] WHERE MaitTech = 1
      

  4.   

    ssp2009不是和楼主写的一样吗?