0
我們升級了SQL數據庫中執行封閉在一個IF語句塊,並不斷有新列加入到升級版SQL試圖即使條件不滿足
例如表,
Table1
有Column1, Column2
列。
,一個額外的列添加
Table1
現在已經列Column1, Column2, Column3
我想創建一個腳本,可以在兩個版本。這個腳本是這樣的:
DECLARE @DBVersion varchar(25)
select @DBVersion = (select DBVersion from DBVersions)
IF @DBVersion = 'Old'
BEGIN
INSERT Table1 (Column1, Column2)
SELECT Value1, Value2
FROM TempTable
END
IF @DBVersion = 'New'
BEGIN
INSERT Table1 (Column1, Column2, Column3)
SELECT Value1, Value2, Value3
FROM TempTable
END
當我運行在舊的數據庫版本的劇本,我得到一個錯誤
無效列名「欄3」
我想,這是因爲SQL在執行之前編譯腳本並且無法找到 有沒有一種方法可以解決此問題並開發可在兩個數據庫版本中運行的腳本?
非常感謝
不確定您正在使用哪種RDBMS,但這會有所幫助。另外,你確定你正在做一個正確的平等嗎?也就是說,有些語言使用'=='進行比較。當然,因爲我不知道你的RDBMS或語言,所以我不知道。 – Marc
有沒有這樣的事情作爲一個** SQL數據庫** --- SQL只是*結構化查詢語言* - 許多數據庫系統使用的語言 - SQL不是數據庫產品...我們真的需要知道什麼數據庫系統(以及您使用的是哪個版本).... –
該語句未執行。引擎試圖解析腳本中的名稱並失敗,因此出現錯誤。 (名稱解析發生在腳本執行之前。)要解決它,請使用@ Thomas的建議。 –