内部ユーザーが何をしているかを知っている非常に柔軟なストアド プロシージャを構築する必要があります。これらは、一日中 SQL*Plus ウィンドウに住んでいて、突然 Web フォームの使用を余儀なくされる人々です。
これらのユーザーには、プロシージャ メタデータを検査して作成されたフォームが提供され、そこで次のようなストアド プロシージャを実行できます。
create or replace
PROCEDURE DEV_UPDATE_TABLE_FOO
(
SET_FIELD IN VARCHAR2
, SET_VALUE IN VARCHAR2
, WHERE_CLAUSE IN VARCHAR2
) AS
BEGIN
UPDATE foo
SET <SET_FIELD>=<SET_VALUE>
where <WHERE_CLAUSE>;
END DEV_UPDATE_TABLE_FOO;
いくつかの簡単な検索では、問題の「プロシージャメタデータを検査して作成されたフォームを提供する」という部分で問題を引き起こすことなく、これが可能であることがわかりません。
SQL インジェクションは基本的に推奨されます。つまり、これらの人々が、選択した単一のフィールドを選択した値で、作成した set 句で更新できるようにしたいと考えています。値が VARCHAR2 などの文字列を引用符で囲む必要があります。
しかし、フォームを描画する UI で利用できるのはメタデータだけです。他のストアド プロシージャは、より静的で合理的です。それらは簡単です。
何か案は?明らかな答えは、「単に sql*plus や sqldeveloper などにアクセスできるようにすることです。残念ながらそれは不可能です。
前もって感謝します...