Получение данных POST из внешнего источника в процедуре PL SQL - PullRequest
3 голосов
/ 04 октября 2011

РЕДАКТИРОВАТЬ ~ Я ответил на свой собственный вопрос ниже в разделе РЕДАКТИРОВАТЬ, не отвечая, потому что я чувствую себя неправильно, если я получаю очки за ответ на свой собственный пост = /

Я пытаюсь найти способ передачи параметровк этой процедуре через 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;

Если я подключу URL:

    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 ]

2 голосов
/ 06 октября 2011

Из вашего комментария я считаю, что вы могли бы решить эту проблему с помощью веток, поскольку все, что вы действительно хотите сделать, - это перенаправить пользователя, когда он отправит свою форму. Или, что еще лучше, не выполняйте ветвление и просто создайте процесс отправки и определите сообщение об успешном и неудачном завершении - отдельная страница не требуется.

2 голосов
/ 13 октября 2011

Думаю, демо на http://htmldb.oracle.com/pls/otn/f?p=9487:65 может ответить на ваш вопрос.

2 голосов
/ 05 октября 2011

Это довольно длинное обсуждение на http://awads.net/wp/2005/11/30/http-post-from-inside-oracle/

Кроме того, не забывайте списки контроля доступа, если вы хотите использовать их в Oracle 11.

0 голосов
/ 15 октября 2011

Хорошо, поэтому я успешно получил переданные почтовые данные в моей процедуре 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>
...