Web ページから Oracle Procedures の定義を編集し (Java でビルド)、コンパイルするシナリオがあります。それは可能でしょうか?もしそうなら、あなたの考えを教えてください。プロシージャには、select/update ステートメントを含む単純なビジネス ロジックが含まれている場合があります。
前もって感謝します。
Web ページから Oracle Procedures の定義を編集し (Java でビルド)、コンパイルするシナリオがあります。それは可能でしょうか?もしそうなら、あなたの考えを教えてください。プロシージャには、select/update ステートメントを含む単純なビジネス ロジックが含まれている場合があります。
前もって感謝します。
これは標準的な要件ではないようですが、はい、できるはずです。変更するデータベースからストアド プロシージャのコードを取得するには、次のコマンドを使用できます。
SELECT text FROM user_source WHERE name = 'procedure_name';
これで、このステートメントによって返された行を編集可能なテキスト ボックスに表示できます。ユーザーが変更を実行すると、データベース内のストアド プロシージャを呼び出して、文字列を受け入れることができます。ストアド プロシージャは次のようになります。
CREATE OR REPLACE PROCEDURE compile_proc
(
v_str IN VARCHAR2
)
IS
BEGIN
EXECUTE IMMEDIATE 'CREATE OR REPLACE PROCEDURE ' || v_str;
END;
/
ここで、Web ページからこのストアド プロシージャを呼び出し、文字列を渡す必要があります。PLSQLを介してそれを行う方法を示すことができます。
DECLARE
v_proc_text VARCHAR2(30000);
BEGIN
v_proc_text := 'sample_procedure AS
v_count NUMBER(1);
BEGIN
SELECT count(1) INTO v_count FROM dual;
END;';
compile_proc (v_proc_text);
END;
言うまでもなく、変更をコンパイルするときにスローされる可能性のある意味論的および構文上のエラーをすべて処理する必要があります。Oracle からリターン コードを取得して、ユーザーに表示することができます。
要件に似たものが Oracle apex クラウドに実装されています。無料のアカウントを作成してチェックアウトできます。