以下部分介绍针对 mySAP Business Suite .NET Framework数据提供程序实现 EXEC 语句的语法规范。 请注意,在某些情况下,语法与 Transact-SQL 语法略有不同。
EXEC rfc_name {<argument_element>} [ , …n ] {;}[0,1] [ OPTION <disabledatavalidation>, <firstresultset> ]
其中:
rfc_name 指定要执行的函数调用的名称。
< >argument_element ::= @param_name = [0,1] <const> {[ INPUT |OUTPUT ]}[0,1]
param_name 指定函数接口中定义的参数名称。
<const> ::= integer | real | string | ? |NULL |xml_element
OPTION 提供了有关如何显示数据的选项。 可用选项是:
disabledatavalidation 选项设置基础 SAP 适配器中的 EnableSafeTyping 绑定属性。 启用安全键入后,DATS、TIMS 和 NUMC 数据类型表示为字符串。 有关此绑定属性的详细信息,请参阅 阅读适用于 mySAP Business Suite 绑定属性的 BizTalk 适配器。
firstresultset 指定由 SAP 数据提供程序返回的第一个结果集。 在 ADO 提供程序源上执行任何语句时,仅返回的第一个结果集可用。 对于 RFC EXEC 方案,通常返回多个表参数,但如果只有第一个结果集可用于客户端程序,则返回这些结果集可能不可用。 通过将“firstresultset”关键字 (keyword) 指定为 OPTION 子句的一部分,客户端可以指定它们希望提供程序返回的第一个表参数。 例如:
EXEC Z_TEST_ALL_TYPES @P_IN='TestInput' OPTION 'disabledatavalidation', firstresultset TAB_ALLTYPES'在此示例中,EXEC 语句指定应TAB_ALLTYPES返回的第一个表参数。
重要
必须始终在单引号内提供 OPTION 关键字 (keyword) 的值,例如“disabledatavalidation”。
在前面的语法中,xml_element可用于为复杂类型提供输入。 对于结构和表,xml 元素结构将有所不同。 结构的xml_element如下所示:
<PARAM_NAME>
<FIELDNAME_1 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">value</FIELDNAME_1>
<FIELDNAME_2 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">value</FIELDNAME_2>
...
...
</ PARAM_NAME>
表的xml_element如下所示:
<PARAM_NAME>
<STRUCT_NAME xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<FIELDNAME_1>value</FIELDNAME_1>
<STRUCT_NAME/>
<STRUCT_NAME xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<FIELDNAME_1>value</FIELDNAME_1>
<STRUCT_NAME/>
...
...
</ PARAM_NAME>
例如,结构类型的 XML 元素类似于以下内容:
<INOUT_STRUCT>
<ACCPFIELD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">2006</ACCPFIELD>
<CHARFIELD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">John</CHARFIELD>
</INOUT_STRUCT>
同样,表类型的 XML 元素类似于以下内容:
<TAB_ALLTYPES>
<ZZSTRUCTALLTYPES_RFC xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<ACCPFIELD>2006</ACCPFIELD>
<CHARFIELD>John</CHARFIELD>
</ZZSTRUCTALLTYPES_RFC>
<ZZSTRUCTALLTYPES_RFC xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<ACCPFIELD>2007</ACCPFIELD>
<CHARFIELD>James</CHARFIELD>
</ZZSTRUCTALLTYPES_RFC>
</TAB_ALLTYPES>
有关示例语句,请参阅 EXEC 语句的示例。
处理命名参数
下面是在 EXEC 查询中指定命名参数的准则:
必须通过 (命名参数来指定参数, @param_name=value)例如 。
注意
不支持未命名的参数
使用默认值定义参数时,无需指定参数即可执行过程。
EXEC 查询不支持使用以下属性的参数:
嵌套结构 (包含结构作为其字段) 的结构。
嵌套表。
包含结构的表。
包含表的结构。
具有复合字符串类型的字段的结构或表,例如
SSTRING或RAWSTRING。下表列出了执行 RFC 时 RFC 参数类型和参数方向之间的逻辑映射。
RFC 参数类型 Query 关键字 参数方向 导入参数 无 Paramdirection.Input 导出参数 输出 Paramdirection.Output 表参数 输出/无 InputOutput 下面是处理参数的一般准则:
可以将参数值指定为常量,也可以在查询中使用占位符。
在查询中使用占位符时,必须创建对象
SAPParameter并将其添加到相应的命令对象。 然后将占位符名称传递给构造函数;方向和值取决于上下文。对于
Input参数,请勿在查询中指定参数方向关键字 (keyword) 。value必须设置参数对象的字段,否则提供程序将引发异常。 不得显式设置direction参数对象的 字段,因为提供程序默认为Input。对于其他参数,请使用 窗体
@paramname=@placeholder并在查询中显式指定Output关键字 (keyword) 。 然后,必须添加SAPParameter与占位符对应的 ,并将参数方向显式设置为ParamDirection.Output或ParamDirection.InputOutput,具体取决于参数类型。
参数名称和占位符名称不区分大小写。
除非参数名称具有不同的方向,否则不能在查询中重复。
占位符名称不能在查询中重复。
调用 EXEC 语句时的注意事项
本部分列出了在将 EXEC 语句与适用于 SAP 的数据提供程序配合使用时必须记住的要点。
对于 EXEC 语句,适用于 SAP 的数据提供程序将
TIMS字段值作为 .NETSystem.DateTime对象返回。注意
对于 SELECT 语句,适用于 SAP 的数据提供程序返回
TIMS字段值作为 .NETSystem.TimeSpan对象。 有关 SELECT 语句的详细信息,请参阅 SAP 中的 SELECT 语句的语法。