2011-05-04 36 views
1

這是一個非常conviluted一塊SQL的,我知道,但基本數據錄入猴子,我的工作搞砸了大牌之一,並在複製已深深捲入了我們的系統。執行SQL更新與子查詢列名

有相當大量的必須從VAL1改爲值2的值,如果另一個值等於VAL3表。問題是,我不知道所有這些情況,並且存在嚴格的列命名策略,這意味着所有表都有唯一的列名。

我寫了下面的SQL試圖做到這一點更新,但它不工作:

UPDATE 
(SELECT DISTINCT TABLE_NAME AS tbTableName 
    FROM ALL_TAB_COLUMNS 
    WHERE COLUMN_NAME LIKE '%MAJR%') 
SET 
(SELECT COLUMN_NAME AS tbColumnName 
    FROM tbTableName 
    WHERE COLUMN_NAME LIKE '%MAJR%') = 'VAL2' 
WHERE 
(SELECT COLUMN_NAME AS tbColumnNameWhere 
    FROM tbTableName 
    WHERE COLUMN_NAME LIKE '%PROGRAM%') = 'VAL3' 
AND tbColumnName = 'VAL1'; 

但是,是的,這屬於在與錯誤:無效user.table.column,TABLE.COLUMN ,或列規格 01747. 00000 - 「無效user.table.column,table.column,或列規範」

任何幫助,將不勝感激。

+1

你將需要使用動態sql – TrevDev 2011-05-04 06:07:54

回答

1

你不能做這樣的子查詢,很遺憾。您最好的選擇是使用PHP或任何您的主要腳本語言,並查詢數據庫爲您構建所有SQL語句。

+0

感謝堆:) - 我使用SQR,所以它不應該*太*糟糕 – 2011-05-04 06:26:34