91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行ABAP OPEN SQL中OPEN CURSOR和SELECT的比較

發布時間:2021-11-29 11:20:33 來源:億速云 閱讀:139 作者:柒染 欄目:數據庫

本篇文章為大家展示了如何進行ABAP OPEN SQL中OPEN CURSOR和SELECT的比較,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

我寫了一個很簡單的report 驗證:

Source code:

 OPEN CURSOR lv_cursor FOR SELECT product_guid FROM comm_product.

FETCH NEXT CURSOR lv_cursor INTO TABLE lt_selection PACKAGE SIZE size.

Size = 1: 此時從ST05里觀察到表COMM_PRODUCT里總共被掃描的記錄數量是1447.

如何進行ABAP OPEN SQL中OPEN CURSOR和SELECT的比較

第二次以size = 100執行,PREPARE和OPEN直接變成REOPEN,但是recs仍然是1447.

如何進行ABAP OPEN SQL中OPEN CURSOR和SELECT的比較

對ST05里的字段Recs按F1,查看說明:

如何進行ABAP OPEN SQL中OPEN CURSOR和SELECT的比較

這個1447是怎么來的呢?因為我OPEN CURSOR時候沒有指定任何條件,所以在OPEN CURSOR時,DB把整個product表的所有記錄視為一個結果集,然后只返回指定package size的條數。

所以ST05里面看到的這個Recs是指滿足OPEN CURSOR 指定條件的記錄的個數,并不是最后返回給ABAP層的記錄的個數。

而在我的測試系統里,表COMM_PRODUCT總共就包含1447條記錄。

如何進行ABAP OPEN SQL中OPEN CURSOR和SELECT的比較

然后我再生成3個新的product,COMM_PRODUCT里面就有1450條entry。

重復執行測試report。ST05發現被掃描的記錄數變成了1450,證明我們的結論是正確的。

如何進行ABAP OPEN SQL中OPEN CURSOR和SELECT的比較

再做一個驗證:表COMM_PRODUCT里面有prefix為JERRY06152012開頭的3條記錄:

如何進行ABAP OPEN SQL中OPEN CURSOR和SELECT的比較

修改上述的測試report,添加一個WHERE查詢條件:

 OPEN CURSOR lv_cursor FOR SELECT product_guid FROM comm_product

WHERE product_id LIKE 'JERRY06152012%'.

第一次執行size = 1

Recs變成3了,因為匹配OPEN CURSOR條件的確實只有3條記錄

如何進行ABAP OPEN SQL中OPEN CURSOR和SELECT的比較

Size = 100, ST05結果和size = 1完全一致,都是3.

結論

WebClient UI上的Maximum Number of Results(簡稱Max hit)不能控制每次OPEN CURSOR去DB查找記錄的條數,這個條數是由OPEN CURSOR后面跟的WHERE CONDITION決定的。Max hit只能控制OPEN CURSOR的WHERE CONDITION 所決定出的結果集里,到底有多少條返回給ABAP。

如何進行ABAP OPEN SQL中OPEN CURSOR和SELECT的比較

Through the verification above, this understanding is wrong.

OPEN SQL的select還有一個功能是UP TO XX ROWS.

用下面的代碼測試:

 SELECT product_guid INTO CORRESPONDING FIELDS OF TABLE lt_line FROM comm_product UP TO num ROWS.

Num = 1

如何進行ABAP OPEN SQL中OPEN CURSOR和SELECT的比較

Num = 143

如何進行ABAP OPEN SQL中OPEN CURSOR和SELECT的比較

說明SELECT UP TO XX ROWS是可以控制數據庫表里到底有多少條記錄被處理的。

但SELECT UP TO XX ROWS不能像OPEN CURSOR那樣能夠在WHILE循環里面反復執行,它不具備像OPEN CURSOR那樣的機制,使得其能夠記住當前正在操作的記錄在結果集里的位置。

上述內容就是如何進行ABAP OPEN SQL中OPEN CURSOR和SELECT的比較,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌恰县| 五大连池市| 锡林郭勒盟| 钟山县| 三江| 犍为县| 东安县| 景德镇市| 淮南市| 瓦房店市| 大化| 上饶市| 军事| 余江县| 金塔县| 万载县| 海淀区| 象山县| 南召县| 鹤庆县| 武威市| 临猗县| 逊克县| 砚山县| 安康市| 北川| 子洲县| 威信县| 阿拉善左旗| 建阳市| 巴彦县| 安化县| 洛浦县| 永寿县| 托克托县| 文昌市| 苏尼特右旗| 台南县| 砀山县| 贵德县| 阳谷县|