使用Web服务虚拟化Oracle数据库
2007-05-10 12:15:09 来源:WEB开发网核心提示: 或者,您可以使用 UTL_DBWS 程序包在运行时动态生成代理、方法名和参数,使用Web服务虚拟化Oracle数据库(4), 该程序包支持动态调用接口 (DII)(动态调用的变体),后者在运行时生成服务端点接口, 还可以存储值并计划批处理作业,该作业定期刷新这些值, 但是,从数据库中动态调
或者,您可以使用 UTL_DBWS 程序包在运行时动态生成代理、方法名和参数。 该程序包支持动态调用接口 (DII)(动态调用的变体),后者在运行时生成服务端点接口。 但是,从数据库中动态调用外部 Web 服务目前不支持复杂类型,而只支持可以映射为 SQL 或 PL/SQL 内置类型的 XML 类型。
Web 服务数据源(表函数)。 您还可以通过 Oracle 数据库表函数机制(允许将二进制结果集作为虚拟表进行处理)从单个或多个 Web 服务中查询 SQL 函数并将其应用于结果集。 (有关完整的示例,请参阅数据库 Web 服务示例代码页。)
在该示例中,JPublisher -proxyopts=tabfun 选项为特定 Web 服务自动生成表函数包装程序。 例如,以下演示了在 SQL*Plus 中,针对要跟踪报价的(选自符号表中的)符号列表调用 getQuote Web 服务生成表函数,并对该表函数进行查询。
首先创建符号表。
SQL> create table symbtab (quote varchar2(4));
SQL> insert into symbtab values('ORCL');
SQL> insert into symbtab values ('CSCO');
SQL> insert into symbtab values ('QCOM');
SQL> insert into symbtab values ('QQQQ');
SQL> insert into symbtab values ('GOOG');
SQL> insert into symbtab values ('EBAY');
SQL> insert into symbtab values ('YHOO');
SQL> commit
然后,执行以下 SQL 命令;它针对该表中的每个符号调用 Web 服务,然后查询表函数(例如,结果集)。 理想情况下,您可能需要 Web 服务,它获取几个参数形式的符号并返回它们的值。
SQL> col ARG0 format a20
SQL> select * from table(jpub_plsql_wrapper.to_table_getQuote(cursor(select * from symbtab)));
ARG0 RES
-------------------- ----------
ORCL 12.64
CSCO 17.12
QCOM 43.4
QQQQ 38.2799
GOOG 353.58
EBAY 38.2
YHOO 35.42
7 rows selected.
输出显示给定符号的报价。 您可以对表函数应用 SQL 运算符(MIN、MAX、AVG 等)。 还可以存储值并计划批处理作业,该作业定期刷新这些值,然后使用 SQL 的强大功能挖掘该表。
更多精彩
赞助商链接