oracle 连接 web service (利用soap_api)
2015-11-23 14:05
666 查看
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 首先导入 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;
相关文章推荐
- oracle 分区表的建立方法
- 常用Oracle分析函数详解
- Oracle中CHAR、VARCHAR的区别
- oracle字符集
- [Rman]Oracle Rman增量备份Level012脚本
- oracle如何取分组最大值记录
- Linux-Oracle
- ORACLE SQL性能优化一
- ORACLE SQL性能优化二
- ORACLE SQL性能优化三
- 如何查询会话 event
- Oracle增加TableSpace
- 通过ORACLE发送邮件(转)
- MOVE和CTAS比较(续)
- MOVE和CTAS比较
- ORACLE创建、修改、删除序列
- oracle 存储过程返回表数据
- oracle 存储过程返回表数据
- oracle 存储过程返回表数据
- oracle 存储过程返回表数据