2016-05-10 5 views
0

Webページ(Javaでビルド)からOracleプロシージャの定義を編集し、コンパイルするシナリオがあります。それは可能でしょうか?もしそうなら、あなたの考えを私に教えてください。プロシージャには、選択/更新ステートメントを含む単純なビジネスロジックが含まれている場合があります。Webページからプロシージャを変更する

ありがとうございます。

答えて

2

これは標準的な要件ではないようですが、はい、できます。変更するデータベースからストアド・プロシージャのコードをフェッチするには、次のコマンドを使用できます。

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の頂点をクラウド上に実装されています。無料のアカウントを作成してチェックアウトすることができます。

https://apex.oracle.com/

+0

ありがとうございます。私はこれがもっと掘るのを助けるかもしれないと思う。 –

関連する問題