函数和过程的消息架构

适用于 Oracle 数据库的 Microsoft BizTalk 适配器将 Oracle 数据库函数和存储过程显示为操作。 本节介绍用于调用函数和过程的消息结构和操作。

函数和过程的消息结构

函数和存储过程显示的操作遵循请求-响应消息交换模式。 下表显示了这些请求和响应消息的结构。

操作 XML 消息 说明
存储过程请求 <[SP_NAME] xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Procedure"> <[PRM1_NAME]>value1</[PRM1_NAME]> <[PRM2_NAME]>value2</[PRM2_NAME]> … </[SP_NAME]> 支持消息正文中的 Oracle IN 和 IN OUT 参数
存储过程响应 <[SP_NAME]Response xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Procedure"> <[PRM1_NAME]>value1<[PRM1_NAME]> <[PRM2_NAME]>value2</[PRM2_NAME]> … </[SP_NAME]Response> 支持消息正文中的 Oracle OUT 和 IN OUT 参数
函数请求 <[FN_NAME] xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Function"> <[PRM1_NAME]>value1</[PRM1_NAME]> <[PRM2_NAME]>value2</[PRM2_NAME]> … </[FN_NAME]> 支持消息正文中的 Oracle IN 和 IN OUT 参数
函数响应 <[FN_NAME]Response xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Function"> <[FN_NAME]Result>return_value</[FN_NAME]Result> <[PRM1_NAME]>value1</[PRM1_NAME]> <[PRM2_NAME]>value2</[PRM2_NAME]> … </[FN_NAME]Response> 支持消息正文中的 Oracle OUT 和 IN OUT 参数

- 函数返回值在 元素中 <[FN_NAME]Result\> 返回。 这是响应消息中的第一个元素。 它在任何参数之前。
打包的过程或函数请求 <[SP_NAME] xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]"> <[PRM1_NAME]>value1</[PRM1_NAME]> <[PRM2_NAME]>value2</[PRM2_NAME]> … </[SP_NAME]> 与函数或存储过程相同
打包的过程或函数响应 <[SP_NAME]Response xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]"> <[PRM1_NAME]>value1</[PRM1_NAME]> <[PRM2_NAME]>value2</[PRM2_NAME]> … </[SP_NAME]Response> 与函数或存储过程相同

[SCHEMA] = Oracle 项目的集合;例如 SCOTT。

[SP_NAME] = 要执行的存储过程;例如,SP_INSERT。

[FN_NAME] = 要执行的函数;例如,FN_GETID。

[PRM1_NAME] = Oracle 参数的名称。 有关每条消息支持的参数方向,请参阅“说明”列。

[PACKAGE_NAME] = 包含目标过程或函数的包的名称。

Oracle 数据库支持对存储过程和函数进行重载。 Oracle 数据库适配器支持此功能,方法是将重载字符串追加到每个重载项目的目标命名空间。 对于第一个重载,此字符串的值为“overload1”,对于第二个重载为“overload2”,依此类而行。 以下示例演示两个重载存储过程的消息结构。

Stored Procedure Overload 1:  
<[SP_NAME] xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]/[SP_NAME]/overload1">    
  <[PRM1_NAME]>value1</[PRM1_NAME]>  
  <[PRM2_NAME]>value1</[PRM2_NAME]>  
  …  
</[SP_NAME]>  

Stored Procedure Overload 2:  
<[SP_NAME] xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]/[SP_NAME]/overload2">    
  <[PRM1_NAME]>value1</I_[PRM1_NAME]>  
  <[PRM2_NAME]>value1</I_[PRM2_NAME]>  
  …  
</[SP_NAME]>  

函数和过程的消息操作

Oracle 数据库适配器对存储过程和函数操作使用以下消息操作。

消息 操作 示例
存储过程请求 http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Procedure/[SP_NAME] http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Procedure/SP_INSERT
存储过程响应 http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Procedure/[SP_NAME]/response http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Procedure/SP_INSERT/response
函数请求 http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Function/[FN_NAME] http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Function/FN_GETID
函数响应 http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Function/[FN_NAME]/response http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Function/FN_GETID/response
打包存储过程请求 http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]/[SP_NAME] http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/CUSTOMER/SP_INSERT
打包存储过程响应 http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]/[SP_NAME]/response http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/CUSTOMER/SP_INSERT/response
打包的函数请求 http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]/[FN_NAME] http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/CUSTOMER/FN_GETID
打包函数响应 http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]/[FN_NAME]/response http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/CUSTOMER/FN_GETID/response
重载存储过程请求 http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Procedure/[SP_NAME]/[OVERLOAD] http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Procedure/SP_INSERT/overload1
重载存储过程响应 http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Procedure/[SP_NAME]/[OVERLOAD]/response http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Procedure/SP_INSERT/overload1/response

[SCHEMA] = Oracle 项目的集合;例如 SCOTT。

[SP_NAME] = 要执行的存储过程;例如,SP_INSERT。

[FN_NAME] = 要执行的函数;例如,FN_GETID。

[PACKAGE_NAME] = 包含目标过程或函数的包的名称。

[OVERLOAD] = Overload 参数。 可能的值为 overload1、overload2 等。

另请参阅

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