直接从 Oracle 调用 Web 服务很简单:
对 XML/XSLT/XQuery 有很好的支持来构造请求和解析响应(XML DB)
Oracle 有一个 API 可以处理 HTTP/HTTPS 请求(UTL_HTTP
包)。
因此,如果您决定从 Oracle 调用 Web 服务 - 对于 SOAP 和 REST Web 服务来说,这是可能的并且相对简单。您可以在 StackOverflow 上的此答案
中找到示例代码。
更新 - 对评论的回答
为了清楚起见,上面的示例不适用于“数据库查询级别”,因为它是在 PL/SQL 上实现的。Oracle 数据库引擎原生支持两种不同的语言:
这两件事真的很不一样。甚至还有一个常见的问题是性能受到 SQL 和 PL/SQL 引擎之间切换上下文的影响,并且主要是由不正确的程序设计引起的。
PL/SQL 作为一种过程语言可以访问一组丰富的 API,这些 API 由 Oracle 作为一组内置包提供。其中有许多与网络通信协议和标准直接相关的包:UTL_TCP
, UTL_URL
, UTL_SMTP
, UTL_MAIL
, UTL_INADDR
, UTL_HTTP
, HTP
, HTF
, DBMS_LDAP
.
需要说的是,有一套 API,用于支持在 Web 上发布 PL/SQL 代码。OWA_
xxxx 软件包集支持通过mod_plsql
. 另一件事是支持在 Oracle XML DB 中发布 SOAP Web 服务。
DBMS_SCHEDULE
如果您需要按计划将数据从 Oracle 卸载到 Web 服务,请查看DBMS_JOB
包以定期启动卸载过程。
大多数系统包都在 Java 上实现,并且可以编写自己的 Java 扩展,可从 PL/SQL 调用。
PS 有一个UTL_DBWS
专门用于从 Oracle 数据库调用 SOAP 服务的包,但似乎它产生的问题多于解决的问题,而且我在 11g 文档(仅限 10g)中找不到对它的引用。
PPS 有些陈述可能有些不准确或有些夸张,但这应该足以理解整体情况。