データベース上のテーブルを更新するための Oracle ストアド プロシージャを作成したいと思います。プロシージャに列名パラメータを与える (または与えない) 方法がある場合、「この列を更新しない」ことを意味します。これは、
テーブル名セットの更新 columnname = nvl(p_columnname, columnname), ... ここで、キー = p_key
これを行うと、列を null にすることはできません。列も無効にできるようにしたい。Oracle が型なしキーワード UNKNOWN をサポートしていれば、p_columname varchar2 := UNKNOWN と言って、カスタム関数でパラメーターの省略をテストできます。しかし、それがなければ、互換性のないデータ型の比較でエラーが発生しないように、データ型ごとに 1 つずつ、「その列を更新しない」ことを意味する魔法の値を定義するのが難しくなります。
これは非常に一般的な問題のようです (変更していない列に対して書き込み前の読み取り選択を必要とせずに、テーブルへのすべての更新を処理する 1 つのストアド プロシージャ)。確かに、誰かがそれを処理するためのベストプラクティスを見つけました。とにかくそう願っています。前もって感謝します。