2012-04-18 5 views
-3

テーブルの2列を30行更新する必要があります。 dbmsユーティリティを使って試してみましたが、スペースは使えません。一度に30行を更新する最適な方法を提案してください。テーブル内の30個のフィールドを一度に更新する

+0

いくつかのコードを表示できますか、何を試してもかまいません。 – Marshal

+0

本当にやりたいことを説明する必要があります。あなたが書いたのはちょうど 'UPDATE colum1 = value、colum2 = value WHERE column3 IN( 'val1'、 'val2'、...、 'val30') ' – Eggi

+0

' 30個の別々の更新クエリ。 1回の実行でこのジョブを実行するループまたは配列を使用したい –

答えて

2

"in one go"の定義に依存すると思いますが、新しい値として設定しようとしているものの、oracleの標準的なSQL更新構文は、あなたが望むようにする必要があります。

UPDATE <table_name> 
SET <column1_name> = <value1>, <column2_name> = <value2> 
WHERE <column_name> = <value> 

あなたがwhere句を設定した場合、それは一意に更新したい列を識別するように、この文は行のみの列を更新します。これはWHERE IN [、]と同じくらい簡単です。更新する行を一意に識別できない場合は、更新する必要があるレコードのキーを格納するために副選択または一時表が必要な場合があります。

http://psoug.org/reference/update.htmlは、さらに詳しい情報を提供する場合があります。

空白の問題は少し簡単ですが、フィールド名をエスケープシーケンスでカプセル化する必要があります。たとえば、テーブル名がAテーブルで、列名がA列の場合、

Update "A Table" 
Set "A Column" = <value>, "Another Column" = <value2> 
Where <where_clause> 
+1

@ killspice-これは 'ORA-01767'となると思います。 「SET = = またはSET()= をデュアルから選択してください。 –

+0

@killspice - 'one go'は必要ありません。 30個の別々の更新クエリを書きます。私は1回の実行でこの仕事をするループや配列を使いたいです。 –

+0

A.B.Cadeありがとうございました。本当にオラクルの人ではなく、あなたは正しいです。 – killspice

関連する問題