最近仕事で、Oracle データベース内のすべてのテーブルのフィールド「フラグ」を「I」に更新する必要があるという要件に遭遇しました。そのステートメントは次のとおりです。
「I」は文字列として使用されます。したがって、ステートメントの一重引用符に I を追加する必要があります。
データベースには複数のテーブルがあるため、ステートメントを 1 つずつ書きたくないので、SQL ステートメントを通じてすべてのステートメントを直接生成できるようにしたいので、次の SQL を書きました。
この時点で実行すると、「エラー: ORA -00923: 必要な FROM キーワードが見つかりませんでした。エラーは 'I' の 2 番目の一重引用符の位置で報告されます。一重引用符のペア関係により、I は文字列ではありません。 , したがって、エラーが報告されます。次に、単一引用符を表示したい場合は、次のステートメントを試してみます: もエラーを報告します。 "'" を表示する必要がある場合は、Java と同様にエスケープ文字を使用する必要があります。Oracle のエスケープ文字は一重引用符であるため、SQL は次のようになります。このように書かれています:update table_name set flag = 'I'
select 'update ' || table_name || ' set flag = 'I'' || ';' from user_tables