SAP 中 EXEC 语句的语法

以下部分介绍针对 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 查询不支持使用以下属性的参数:

    • 嵌套结构 (包含结构作为其字段) 的结构。

    • 嵌套表。

    • 包含结构的表。

    • 包含表的结构。

    • 具有复合字符串类型的字段的结构或表,例如 SSTRINGRAWSTRING

      下表列出了执行 RFC 时 RFC 参数类型和参数方向之间的逻辑映射。

    RFC 参数类型 Query 关键字 参数方向
    导入参数 Paramdirection.Input
    导出参数 输出 Paramdirection.Output
    表参数 输出/无 InputOutput

    下面是处理参数的一般准则:

  • 可以将参数值指定为常量,也可以在查询中使用占位符。

  • 在查询中使用占位符时,必须创建对象 SAPParameter 并将其添加到相应的命令对象。 然后将占位符名称传递给构造函数;方向和值取决于上下文。

    • 对于Input参数,请勿在查询中指定参数方向关键字 (keyword) 。 value必须设置参数对象的字段,否则提供程序将引发异常。 不得显式设置 direction 参数对象的 字段,因为提供程序默认为 Input

    • 对于其他参数,请使用 窗体@paramname=@placeholder并在查询中显式指定Output关键字 (keyword) 。 然后,必须添加 SAPParameter 与占位符对应的 ,并将参数方向显式设置为 ParamDirection.OutputParamDirection.InputOutput,具体取决于参数类型。

  • 参数名称和占位符名称不区分大小写。

  • 除非参数名称具有不同的方向,否则不能在查询中重复。

  • 占位符名称不能在查询中重复。

调用 EXEC 语句时的注意事项

本部分列出了在将 EXEC 语句与适用于 SAP 的数据提供程序配合使用时必须记住的要点。

  • 对于 EXEC 语句,适用于 SAP 的数据提供程序将 TIMS 字段值作为 .NET System.DateTime 对象返回。

    注意

    对于 SELECT 语句,适用于 SAP 的数据提供程序返回 TIMS 字段值作为 .NET System.TimeSpan 对象。 有关 SELECT 语句的详细信息,请参阅 SAP 中的 SELECT 语句的语法

另请参阅

关于 mySAP Business Suite 的 .NET Framework 数据提供程序