函数和过程的消息架构

用于 Oracle Database 的 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 和 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 和 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 和 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 和 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 Database 适配器通过将重载字符串追加到每个重载项目的目标命名空间来支持此功能。 对于第一个重载,此字符串的值为 "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 Database 适配器对存储过程和函数操作使用以下消息操作。

消息 操作 示例
存储过程请求 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] = 重载参数。 可能的值为 overload1、overload2 等。

另请参阅

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