2016-11-10 5 views
0

Я хочу вызвать url из хранимой процедуры Oracle.Throw '&' String Url on Oracle хранимая процедура

/* Formatted on 11/10/2016 19:04:58 (QP5 v5.185.11230.41888) */ 
DECLARE 
    req  UTL_HTTP.req; 
    resp UTL_HTTP.resp; 
    VALUE VARCHAR2 (1024); 
BEGIN 
    req := UTL_HTTP.begin_request ('http://11.123.33.32:8002/Cool/value?car=Ferrari&Home=California'); 
    UTL_HTTP.set_header (req, 'User-Agent', 'Mozilla/4.0'); 
    resp := UTL_HTTP.get_response (req); 

    LOOP 
     UTL_HTTP.read_line (resp, VALUE, TRUE); 
     DBMS_OUTPUT.put_line (VALUE); 
    END LOOP; 

    UTL_HTTP.end_response (resp); 
EXCEPTION 
    WHEN UTL_HTTP.end_of_body 
    THEN 
     UTL_HTTP.end_response (resp); 
END; 
/

Но он не может читать «&» строку на оракула, как я должен вызвать URL в хранимой процедуре?

ответ

1

Вы можете использовать url encoding.

URL-код заменяет небезопасные символы ASCII на %, за которым следуют две шестнадцатеричные цифры. Таким образом, вы можете заменить & эквивалентной «безопасной» версией %26.

Таким образом, ваш URL станет

'http://11.123.33.32:8002/Cool/value?car=Ferrari%26Home=California'

смысл, вы просто заменить 1 строку в коде

req := UTL_HTTP.begin_request ('http://11.123.33.32:8002/Cool/value?car=Ferrari&Home=California');

становится

req := UTL_HTTP.begin_request ('http://11.123.33.32:8002/Cool/value?car=Ferrari%26Home=California');

+0

как реализовать urlencode на моем коде –

+0

@AmirRachman Просто замените 1 строку в коде тем, который я предоставил. например 'req: = UTL_HTTP.begin_request ('http://11.123.33.32:8002/Cool/value?car=Ferrari%26Home=California');' ... – Plirkee

0
set define off; 

перед тем, как ваш кодовый блок должен решить проблему с чтением &. Затем выполните целое как скрипт.

+0

Я положил это один на верхней части строки, но кажется, что не работает –

+0

@AmirRachman, какой клиент вы используете для запуска своего кода? – Kacper

+0

В настоящее время я использую жабу для клиента –