适用于 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 等。