oracle 连接 web service (利用soap_api)

ORACLE 自 9i 起,允许使用 UTL_HTTP 包进行访问网络,可以直接在 ORACLE 中发起 WEB SERVICE 调用,经测试该方法在oracle 10g中同样适用

1 首先导入 soap_api 包 。 该包也可在在 http://www.oracle-base.com/dba/miscellaneous/soap_api.sql 下载

2 准备调用web service,可以写成函数,也可以写成过程等等

CREATE OR REPLACE FUNCTION FUN_getIPAddress(v_IPAddress IN VARCHAR)
  RETURN VARCHAR AS
  l_request  soap_api.t_request;
  l_response soap_api.t_response;

  v_return      VARCHAR2(32767); -- 返回结果
  v_url         VARCHAR2(32767); -- Web Service 地址
  v_namespace   VARCHAR2(32767); -- Web Service 命名空间
  v_method      VARCHAR2(32767); -- 调用 Web Service 的方法
  v_soap_action VARCHAR2(32767); -- soapAction
  v_result_name VARCHAR2(32767); -- 返回结果参数名
BEGIN

 -- 生成request对象
    l_request := soap_api.new_request(p_method    => v_method,
                                      p_namespace => v_namespace);
    -- 向入参中加入参数,如果有多个参数,会有多个 soap_api.add_parameter
    soap_api.add_parameter(p_request => l_request,
                           p_name    => 'RequestIP', -- 参数名字,可以在Web Service 中找到,一般在 element name=方法名 节点找到
                           p_type    => 's:string', -- 参数类型,可以在Web Service 中找到,一般在 element name=方法名 节点 type="s:string" 找到
                           p_value   => v_IPAddress);
  
    -- 调用执行 Web Service 方法
    l_response := soap_api.invoke(p_request => l_request,
                                  p_url     => v_url,
                                  p_action  => v_soap_action);
    -- 获取返回值
    v_return := soap_api.get_return_value(p_response  => l_response,
                                          p_name      => v_result_name,
                                          p_namespace => v_namespace);
  EXCEPTION
    WHEN OTHERS THEN
      v_return := 'Error' || sqlerrm;
  END;
  RETURN v_return;
END;
/
show error;

3 完成后,测试即可

  select FUN_getIPAddress('61.128.114.133')  as  IPArea from dual;


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值