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 语句将多次针对每个参数集执行一次。

另请参阅

Oracle 数据库的 BizTalk 适配器的消息和消息架构