共用方式為


SAP 中 EXEC 語句的語法

下一節說明針對 mySAP Business Suite .NET Framework Data Provider 實作 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 資料類型會以字串表示。 如需此系結屬性的詳細資訊,請參閱 閱讀 BizTalk Adapter for mySAP Business Suite 系結屬性

    • firstresultset 指定資料提供者 for 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 參數類型 Query 關鍵字 參數方向
    匯入參數 不需任何動作 Paramdirection.Input
    匯出參數 輸出 Paramdirection.Output
    資料表參數 輸出/無 InputOutput

    以下是處理參數的一般指導方針:

  • 您可以將參數值指定為常數,或在查詢中使用預留位置。

  • 在查詢中使用預留位置時,您必須建立 SAPParameter 物件,並將它新增至對應的命令物件。 接著,您會將預留位置名稱傳遞至建構函式;方向和值取決於內容。

    • 針對 Input 參數,請勿在查詢中指定 參數方向的關鍵字。 value必須設定參數物件的欄位,否則提供者會擲回例外狀況。 您不得明確設定 direction 參數物件的欄位,因為提供者預設為 Input

    • 對於其他參數,請使用 表單 @paramname=@placeholder ,並在查詢中明確指定 Output 關鍵字。 然後,您必須新增 SAPParameter 對應至預留位置的 ,並根據參數類型明確地將參數方向設定為 ParamDirection.OutputParamDirection.InputOutput

  • 參數名稱和預留位置名稱不區分大小寫。

  • 除非參數名稱有不同的方向,否則無法在查詢中重複。

  • 查詢中不能重複預留位置名稱。

呼叫 EXEC 語句時的考慮

本節列出搭配使用 EXEC 語句與 Data Provider for SAP 時必須記住的點。

  • 針對 EXEC 語句,DATA Provider for SAP 會將 TIMS 域值當做 .NET System.DateTime 物件傳回。

    注意

    針對 SELECT 語句,DATA Provider for SAP 會將 TIMS 域值當做 .NET System.TimeSpan 物件傳回。 如需 SELECT 語句的詳細資訊,請參閱 SAP 中 SELECT 語句的語法

另請參閱

關於 .NET Framework Data Provider for mySAP Business Suite