从Oracle存储过程访问Web服务


问题内容

是否有人从Oracle存储过程成功访问了Web服务?如果是这样,那是Java存储过程吗?PL / SQL存储过程?

有什么原因为什么我不应该尝试从存储的proc访问WS?

这是我到目前为止发现的几个参考

为了澄清,这是针对SOAP调用的


问题答案:

首先,您要调用哪种Web服务?我假设是SOAP或REST。

对于REST Web服务,在一个简单的PL / SQL存储过程中结合使用少量XPath,通常已经足够了UTL_HTTP。

对于SOAP
Web服务,这取决于您需要(或想要)的复杂程度。您当然可以使用XQuery创建一个符合Web服务规范的XML文档,使用UTL_HTTP发布该文档并获取响应,然后使用一些XPath在PL
/ SQL中解析所有响应。这是一个相对手动和相对蛮力的解决方案,但是如果您谈论的是少数Web服务,则它只需要最少的基础结构,并且呼叫可以很快地组合在一起。

如果您希望调用随着时间的推移而发展,或者希望有许多调用许多Web服务的过程,那么将时间花费在诸如UTL_DBWS之类的事情上可能是有意义的(不过,通常情况下,这不是什么事情)在几个小时内工作)。