投掷'' Oracle存储过程上的字符串URL

时间:2016-11-10 12:18:08

标签: oracle stored-procedures

我想从Oracle存储过程调用url。

/* 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;
/

但它无法阅读'&' oracle上的字符串,我应该如何调用存储过程中的URL?

2 个答案:

答案 0 :(得分:1)

您可以使用url encoding

网址编码<div *ngIf="isLoading">Getting data....</div> <div let displayData of data> <p> {{ displayData.id }}</p> </div> 后跟两个十六进制数字替换不安全的ASCII字符。 因此,您可以将%替换为等效的'安全'版本&

因此,您的网址将变为

%26

意思是,您只需在代码中替换1行

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

成为

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

答案 1 :(得分:0)

set define off;

在您的代码块解决问题时应该阅读&。然后执行整个脚本。

相关问题