2015-09-08 182 views
1

甲骨文更新多列讓我們假設我在一個場景中創建一個table--具有相同的價值

Create table t1 (aa varchar2(5),bb varchar2(5),cc varchar2(5)); 

插入的值在它 -

insert into T1 values ('a','b','c'); 
commit; 

現在,如果我想更新所有列具有相同的價值,那麼我正在這樣做 -

UPDATE T1 SET AA='x',BB='x',CC='x'; 

是否有任何其他方式通過此更新任務可以ac完成實時考慮可能會有相當多的列,並且必須一次更新相同的值?

我使用的是Oracle 11.2.0.1.0 - 64位生產

注意:通常有非常少的,其中相同的價值觀正在爲所有列更新的任何場景。但是,例如,考慮一個學校數據庫和一個好學生在所有科目中都取得了10/10分。 :-)

謝謝。

+3

沒有,爲什麼要呢?您只構建一次查詢。 –

回答

3

有沒有辦法在純SQL。您必須在UPDATE語句中明確列出所有

而且,相信使用好文本編輯器並不是一件困難的事情。使用元數據可以在幾秒鐘內獲得列名稱列表,您只需按照語法準備SQL語句即可。

如果你真的想這樣做動態,那麼你需要做的是在PL/SQL和(AB)使用EXECUTE IMMEDIATE。我個人不會建議它,除非你只是爲了學習目的而做。

0

你可以試試這個:

UPDATE T1 SET AA='x',BB=AA,CC=AA; 
+0

歡迎來到堆棧溢出!感謝您的代碼片段,它可能會提供一些有限的即時幫助。一個[正確的解釋將大大提高其長期價值](/ meta.stackexchange.com/q/114762/206345)通過顯示_why_這是一個很好的解決方案,並將使它對未來的讀者更有用其他類似的問題。請[編輯]你的答案以添加一些解釋,包括你所做的假設。 – Mogsdad