SQLEXECUTE 操作的消息架构
适用于 Oracle 数据库的 Microsoft BizTalk 适配器显示 LOB 系统中存在的项目的强类型元数据,并公开这些项目的标准操作。 但是,在某些情况下,应用程序可能需要执行由应用程序中的业务逻辑驱动的任意 SQL 语句。 例如,你可以采取以下建议:
对 Oracle 数据库适配器未显示的数据库项目执行操作;例如,获取 Oracle SEQUENCE 的 CURVAL 或 NEXTVAL。
执行数据定义语言操作;例如,创建表。
对设计时不存在的数据库项目执行操作;例如,更新业务逻辑创建的临时表中的记录。
对表执行比 Oracle 数据库适配器显示的操作更复杂的 DML 操作;例如,执行包含 JOIN 子句的查询。
Oracle 数据库适配器会显示一个名为 SQLEXECUTE 操作的特殊操作来支持此类方案。 通过使用此操作,可以为要对 Oracle 数据库执行的 Oracle 数据库适配器指定任意 SQL 语句。 还可以为 SQL 语句指定多个输入参数块。 Oracle 数据库适配器为每个参数集执行一次 SQL 语句,并将任何输出作为泛型 (弱类型) 记录集返回。
注意
可以将 IN 和 IN OUT 参数传递给 SQLEXECUTE 操作中的过程、函数和包。 调用的项目将使用 Oracle 数据库上提供的参数执行;但是,SQLEXECUTE 操作不会向客户端返回 OUT 和 IN OUT 参数的值。 如果要调用过程、函数或包,Microsoft 建议通过调用 Oracle 数据库适配器为这些 Oracle 项目公开的专用操作来执行此操作。
以下 XML 显示了 SQLEXECUTE 操作的结构:
<SQLEXECUTE xmlns="SQLEXECUTE">
<SQLSTATEMENT> [STATEMENT] </SQLSTATEMENT>
<PARAMETERSCHEMA>[PARAM_SPEC]</PARAMETERSCHEMA>
<PARAMETERSET>
<PARAMETERDATA>
<PARAMETER xmlns:c="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<c:string>[PARAM_VAL_1]</c:string>
</PARAMETER>
</PARAMETERDATA>
…
</PARAMETERSET>
</SQLEXECUTE>
[STATEMENT] = 要执行的 SQL 语句;例如,“SELECT * from emp WHERE empno=:emp_no”。
[PARAM_SPEC] = SQL 语句中的 IN 参数列表及其数据类型;例如,“emp_no NUMBER”。
[PARAM_VAL_1] = 第一个参数的值。
每个 <PARAMETERDATA> 节都包含一组<完整的 PARAMETER> 元素,这些元素与 PARAMETERSCHEMA> 部分中的<架构匹配。 PARAMETERSET <> 可以包含多个 <PARAMETERDATA> 节。 如果是这种情况,SQL 语句将多次针对每个参数集执行一次。