簡體   English   中英

在SQL中具有相同名稱的兩個臨時表

[英]Two Temporary Table with same name in SQL

我們正在將foxpro數據庫重寫為SQL。 我遇到以下情況。 Foxpro可以在兩個不同的if語句下創建兩個具有相同名稱的游標。

我試圖在SQL中做同樣的事情。 創建了兩個臨時表。 如下所示:

IF @id = 1
BEGIN
SELECT * INTO #abc from table1
END

IF @id = 2
BEGIN
SELECT * INTO #abc frm table2
END

接下來,我在此處編寫代碼以用另一列更新臨時表列的值。 但是sql向我拋出一個錯誤,提示“數據庫中已經存在一個名為#abc的對象”。

我可以解決這個問題嗎?

謝謝。

而不是使用SELECT INTO創建表,為什么不先定義表,然后再定義INSERT (假設臨時表結構對於兩者都相同)?

CREATE TABLE #abc (Col1 Int, Col2 varchar(50))

IF @id = 1
BEGIN
  INSERT INTO #abc SELECT * from table1
END

IF @id = 2
BEGIN
  INSERT INTO #abc SELECT * from table2
END

對於您的特定用例,假設兩者都具有可以使用的相同結構。

IF @id IN ( 1, 2 )
  BEGIN
      SELECT *
      INTO   #abc
      FROM   table1
      WHERE  @id = 1
      UNION ALL
      SELECT *
      FROM   table2
      WHERE  @id = 2
  END 

以避免遇到解析器問題。 我同意Ben的評論,盡管FoxPro代碼的字面翻譯可能會導致您效率低下且難以維護。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM