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 查詢不支援搭配下列屬性使用參數:
巢狀結構 (結構,其中包含結構作為其欄位) 。
巢狀資料表。
包含 結構的資料表。
包含資料表的結構。
結構或資料表,具有具有複合字串類型的欄位,例如
SSTRING
或RAWSTRING
。下表列出 RFC 參數類型與執行 RFC 時的參數方向之間的邏輯對應。
RFC 參數類型 Query 關鍵字 參數方向 匯入參數 不需任何動作 Paramdirection.Input 匯出參數 輸出 Paramdirection.Output 資料表參數 輸出/無 InputOutput 以下是處理參數的一般指導方針:
您可以將參數值指定為常數,或在查詢中使用預留位置。
在查詢中使用預留位置時,您必須建立
SAPParameter
物件,並將它新增至對應的命令物件。 接著,您會將預留位置名稱傳遞至建構函式;方向和值取決於內容。針對
Input
參數,請勿在查詢中指定 參數方向的關鍵字。value
必須設定參數物件的欄位,否則提供者會擲回例外狀況。 您不得明確設定direction
參數物件的欄位,因為提供者預設為Input
。對於其他參數,請使用 表單
@paramname=@placeholder
,並在查詢中明確指定Output
關鍵字。 然後,您必須新增SAPParameter
對應至預留位置的 ,並根據參數類型明確地將參數方向設定為ParamDirection.Output
或ParamDirection.InputOutput
。
參數名稱和預留位置名稱不區分大小寫。
除非參數名稱有不同的方向,否則無法在查詢中重複。
查詢中不能重複預留位置名稱。
呼叫 EXEC 語句時的考慮
本節列出搭配使用 EXEC 語句與 Data Provider for SAP 時必須記住的點。
針對 EXEC 語句,DATA Provider for SAP 會將
TIMS
域值當做 .NETSystem.DateTime
物件傳回。注意
針對 SELECT 語句,DATA Provider for SAP 會將
TIMS
域值當做 .NETSystem.TimeSpan
物件傳回。 如需 SELECT 語句的詳細資訊,請參閱 SAP 中 SELECT 語句的語法。