mod_plsqlで任意の数のパラメータを受け取るページを作る方法

プロシージャ定義

通常のページと同じように、プロシージャを定義する。ただし、引数は ( name_array IN OWA.vc_arr, value_array IN OWA.vc_arr ) とする必要がある。
プロシージャ名や型には自由度があるが、引数名は name_array と value_array でなければならない。引数名が一致しないと呼び出されずに 404 Not Found となる。

CREATE OR REPLACE
PROCEDURE FLEXIBLE( name_array IN OWA.vc_arr, value_array IN OWA.vc_arr ) AS
BEGIN
    HTP.HTMLOPEN;
    HTP.HEADOPEN;
    HTP.TITLE('FLEXIBLE PARAMETER PASSING');
    HTP.HEADCLOSE;
    HTP.BODYOPEN;

    HTP.TABLEOPEN;
    HTP.TABLEROWOPEN;
    HTP.TABLEHEADER('NAME');
    HTP.TABLEHEADER('VALUE');
    HTP.TABLEROWCLOSE;

    FOR i IN 1 .. name_array.count LOOP
        HTP.TABLEROWOPEN;
        HTP.TABLEDATA(name_array(i));
        HTP.TABLEDATA(value_array(i));
        HTP.TABLEROWCLOSE;
    END LOOP;

    HTP.TABLECLOSE;

    HTP.BODYCLOSE;
    HTP.HTMLCLOSE;
END;
/

アクセス

通常はプロシージャ名でアクセスするのだが、任意の数のパラメータを受け取るページの場合、「!」をプロシージャの前につけなければならない。
どうしても外にそれを見せたくない場合には、Apacheで変換などをすればよいのだろう。