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> ::= 整数|实|字符串|? |NULL |xml_element

  • OPTION 提供了有关如何显示数据的选项。 可用选项是:

    • disabledatavalidation 选项设置基础 SAP 适配器中的 EnableSafeTyping 绑定属性。 启用安全键入后,DATS、TIMS 和 NUMC 数据类型表示为字符串。 有关此绑定属性的详细信息,请参阅 有关 mySAP Business Suite 绑定属性的 BizTalk 适配器的信息。

    • firstresultset 指定 SAP 数据提供程序返回的第一个结果集。 在 ADO 提供程序源上执行任何语句时,仅返回的第一个结果集可用。 对于 RFC EXEC 方案,通常返回多个表参数,但如果只有第一个结果集可用于客户端程序,则可能无法使用。 通过将“firstresultset”关键字指定为 OPTION 子句的一部分,客户端可以指定他们希望提供程序返回的第一个表参数。 例如:

      EXEC Z_TEST_ALL_TYPES @P_IN='TestInput' OPTION 'disabledatavalidation', firstresultset TAB_ALLTYPES'  
      

      在此示例中,EXEC 语句指定返回的第一个表参数应TAB_ALLTYPES。

    重要

    必须始终在单引号中提供 OPTION 关键字的值,例如“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 参数类型 查询关键字 参数方向
    导入参数 Paramdirection.Input
    导出参数 输出 Paramdirection.Output
    表参数 输出/无 InputOutput

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

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

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

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

    • 对于其他参数,请使用窗体 @paramname=@placeholder 并在查询中显式指定 Output 关键字。 然后,必须添加一个SAPParameter与占位符对应的参数方向,并根据参数类型显式设置参数方向ParamDirection.InputOutputParamDirection.Output

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

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

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

调用 EXEC 语句时的注意事项

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

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

    注意

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

另请参阅

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