SAP 中 EXECQUERY 語句的語法
您可以使用 SAP GUI 來建立查詢,方法是以圖形方式選取您想要查詢的數據表、您想要包含在結果集中的數據行和排序順序等等。Data Provider for SAP 可讓使用者透過提供 EXECQUERY 作業,讓使用者可用來執行 SAP 系統中定義的查詢,以從 ADO.NET 應用程式執行這類查詢。
適用於 SAP 的數據提供者會使用自定義 RFC Z_EXECUTE_SAP_QUERY在 SAP 系統中執行預先定義的查詢。 自定義 RFC 接著會執行 RSAQ_REMOTE_QUERY_CALL,這是 SAP 系統中定義的標準 RFC。 因此,您必須先在 SAP 系統中安裝自定義 RFC,才能使用 EXECQUERY 作業來執行查詢。 如需如何安裝自定義 RFC 的指示,請參閱 安裝 SAP 數據提供者的自定義 RFC。
本主題提供 EXECQUERY 作業語法的相關信息,以及其他與 EXECQUERY 作業相關的實用資訊。
EXECQUERY 語句的語法
下一節說明針對 DATA Provider for SAP 使用 EXECQUERY 作業的文法規格。
EXECQUERY <QueryName> @USERGROUP='usergroup' [, @WORKSPACE='X'] [, @VARIANT='variant']
[, @P1='<value 1>’] [, @P2='<value 2>'] ... [, @Pn = '<value n>'] [, @P1!='<value 3>'] [, @P1 > '<value 4>'] [, @P1 <= '<value 2>']
[, NOT @P1 = '<value 2>'] [, NOT @P1 != '<value 2>'] [, NOT @P1 > '<value 2>']
[, @P1 BETWEEN '<value 1>' AND '<value 2>'] [, NOT @P1 BETWEEN '<value 1>' AND '<value2>’]
[OPTION 'USEORIGINALCOLUMNNAMES']
位置:
<QueryName> 是 SAP 系統中定義的查詢名稱。
USERGROUP 是指定義查詢的使用者群組。 這是必要參數。
WORKSPACE 是指定義查詢的工作區。 在 SAP 中,有兩個工作區:標準和全域。 提供空白空間以指定標準工作區。 提供
X
以指定全域工作區。 預設值為空白。VARIANT 是指一組儲存的選取準則,您可以在執行 SAP 查詢時指定。 例如,您可以使用變體來指定查詢的預設值。
@Pn 參照 SAP 查詢定義中的第 n個 選取欄位。
USEORIGINALCOLUMNNAMES 會指定提供者是否使用 DataSet 中的原始資料行名稱,因為它們存在於 SAP 系統中。 根據預設,提供者會使用 SAP 查詢中定義的易記名稱。 不過,如果查詢內的易記名稱不是唯一的,ADO.NET 用戶端會在從 DataSet 讀取數據時擲回錯誤。 在這種情況下,您必須指定USEORIGINALCOLUMNNAMES選項,指出提供者使用DataSet中的原始資料行名稱。
重要
您必須一律在單引號中提供OPTION關鍵詞的值,例如 'USEORIGINALCOLUMNNAMES'。
注意
如需 SAP 查詢參數如何轉譯為 EXECQUERY 語法的詳細資訊,請參閱 將 SAP 查詢參數轉譯為 EXECQUERY 命令。
框架 EXECQUERY 語法
執行 SAP 查詢之 EXECQUERY 作業的框架語法取決於查詢在 SAP 系統中定義的方式,包括 SAP 中定義的每個參數值。 如需如何框架 EXECQUERY 語法以執行 SAP 查詢的詳細資訊,請參閱 將 SAP 查詢參數轉譯為 EXECQUERY 命令。
使用 EXECQUERY 作業時的其他考慮
本節列出搭配 DATA Provider for SAP 使用 EXECQUERY 語句時必須記住的點。
針對 USERGROUP、WORKSPACE 和 VARIANT 指定的值會依原狀傳遞至標準 SAP RFC,RSAQ_REMOTE_QUERY_CALL。 適用於 SAP 的數據提供者不會驗證為這些參數指定的值。
EXECQUERY 作業傳回的所有值都是字串類型。
查詢名稱、使用者群組、工作區和變體的關鍵詞不區分大小寫。 不過,參數名稱一律必須是大寫P,例如 @P1、 @P2等。例如:
EXECQUERY xyz USERGROUP=’mygrp’, NOT @P1= 'somevalue'
等同於
EXECQUERY xyz uSERgROUP=’mygrp’, NOT @P1= 'somevalue'
EXECQUERY 支援的運算子為 >、 <、 >=、 <=、!=、NOT 和 BETWEEN。
EXECQUERY 作業不支援通配符。 例如,下列語句會提供預期的輸出:
EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024', @P1 = '0000003262',@P2 = 'La Quinta Hotel & Towers'
不過,以通配符執行時相同的查詢會產生錯誤。 請注意,@P2通配符的使用方式。
EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024', @P1 = '0000003262',@P2 = '*&*'
在此範例中,您可能會收到錯誤,指出找不到任何數據。 這是因為查詢會搜尋 『*&*』 作為字串,而且不會將星號 (*) 視為通配符。
您必須一律以YYYYMMDD格式指定日期值。
如果您要執行在 SAP 系統中定義的 Variant 查詢,您可以將 Variant 的名稱指定為命令的一部分。 例如:
EXECQUERY myquery @usergroup='mygroup',@variant = 'variant1'
注意
如果您為 SAP 系統中的查詢定義預設變體,您就不需要指定變體名稱。