在PL SQL过程中从外部源检索POST数据

时间:2011-10-04 15:55:07

标签: sql oracle post plsql oracle-apex

编辑〜我已经在编辑部分回答了我自己的问题,没有回答,因为如果我得到积分回答我自己的帖子我感觉不对= /

我正在尝试找到一种通过URL

将参数传递给此过程的方法
    create or replace procedure extinput(KEY in varchar2 := 'KEY',NAME in varchar2 := 'NAME') is
    l_apex_url varchar2(4000);

    begin
    htp.p('Hello extinput');
    htp.p(KEY);
    --htp.p('NAME');
    htp.p(NAME);
    --l_apex_url:= 'http://myhost:myport/pls/apex/extinput;
    --l_apex_url:= 'google.com'; 
    --owa_util.redirect_url(l_apex_url);

    end extinput;

如果我插入网址:

    http://horizon.lcc.edu:7777/pls/apex/extinput

进入我的浏览器然后页面发送:

    Hello extinput KEY NAME

这对于确认我可以通过URL调用该过程很好,但现在我正在努力将一些变量传递给它的参数。

我想知道是否必须将值放在URL [GET]中(实际上不愿意)或者是否有办法从外部服务器上的表单中重新获取[POST]数据,如下所示:

    <form Method="POST" action="http://horizon.lcc.edu:7777/pls/apex/extinput" name="form1">
        <P><b>This form has three parameters, which matches the number of parameters the procedure view_http_post_fixed has.</b>
        <table><tr><td>Session Id:</td>
                       <td><input type="text" name="SESSION_ID" value="9582274473829998340">        </td>
            </tr>
            <tr><td>Key:</td>
                <td><input type="text" name="KEY" id="KEY" value="1109"></td>
            </tr>
            <tr><td>Name:</td>
                <td> <input type="text" name="NAME" id="NAME" value="Jeff Eberhard"></td>
            </tr></table>
    <input value="Submit" type="submit">
    </form>

任何帮助或“正确方向的点”都将非常感激=)

$$编辑$$

好的,所以我已成功通过我的pl sql程序传递了数据

    create or replace procedure extinput(KEY in varchar2 := 'KEY',NAME in varchar2 := 'NAME') 
    is
        l_apex_url varchar2(4000);
    begin
        htp.p('Hello extinput');

        htp.p(KEY);
        htp.p(NAME);

        insert into post_table (col2, col3 ) values(KEY, NAME);
    end extinput;

得出这个结论让我觉得我让这个问题变得更加复杂。很抱歉,如果是这样,但至少这个问题现在已经解决了。

错误被抛出,因为我发送了3个参数,但只编写了两个参数。因此,要么从表单中删除输入,要么添加第三个参数区域。这是最终确定的表格:

    <form Method="POST" action="http://horizon.lcc.edu:7777/pls/apex/extinput" name="form1">
        <P><b>This form has three parameters, which matches the number of parameters the procedure view_http_post_fixed has.</b>
        <table>
            <tr><td>Key:</td>
                <td><input type="text" name="KEY" id="KEY" value="1109"></td>
            </tr>
            <tr><td>Name:</td>
                <td> <input type="text" name="NAME" id="NAME" value="Jeff Eberhard"></td>
            </tr></table>
    <input value="Submit" type="submit">
    </form>

4 个答案:

答案 0 :(得分:2)

http://awads.net/wp/2005/11/30/http-post-from-inside-oracle/

对此进行了相当冗长的讨论

另外,如果您希望在Oracle 11上使用此功能,请不要忘记访问控制列表。

答案 1 :(得分:2)

从你的评论中我相信你可以通过使用分支来解决这个问题,因为你真正想要做的就是在用户提交表单时重定向用户。或者甚至更好,不要分支,只需创建一个提交过程,并定义成功和失败消息 - 不需要单独的页面。

答案 2 :(得分:2)

我认为演示在 http://htmldb.oracle.com/pls/otn/f?p=9487:65可能会回答您的问题。

答案 3 :(得分:0)

好的,所以我已成功通过我的pl sql程序传递了数据

    create or replace procedure extinput(KEY in varchar2 := 'KEY',NAME in varchar2 := 'NAME') 
    is
        l_apex_url varchar2(4000);
    begin
        htp.p('Hello extinput');

        htp.p(KEY);
        htp.p(NAME);

        insert into post_table (col2, col3 ) values(KEY, NAME);
    end extinput;

得出这个结论让我觉得我让这个问题变得更加复杂。很抱歉,如果是这样,但至少这个问题现在已经解决了。

错误被抛出,因为我发送了3个参数,但只编写了两个参数。因此,要么从表单中删除输入,要么添加第三个参数区域。这是最终确定的表格:

    <form Method="POST" action="http://horizon.lcc.edu:7777/pls/apex/extinput" name="form1">
        <P><b>This form has three parameters, which matches the number of parameters the procedure view_http_post_fixed has.</b>
        <table>
            <tr><td>Key:</td>
                <td><input type="text" name="KEY" id="KEY" value="1109"></td>
            </tr>
            <tr><td>Name:</td>
                <td> <input type="text" name="NAME" id="NAME" value="Jeff Eberhard"></td>
            </tr></table>
    <input value="Submit" type="submit">
    </form>