国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ABAP OPEN SQL里OPEN CURSOR和SELECT的比較

Aomine / 3529人閱讀

摘要:所以里面看到的這個(gè)是指滿足指定條件的記錄的個(gè)數(shù),并不是最后返回給層的記錄的個(gè)數(shù)。而在我的測(cè)試系統(tǒng)里,表總共就包含條記錄。發(fā)現(xiàn)被掃描的記錄數(shù)變成了,證明我們的結(jié)論是正確的。

OPEN CURSOR

After the OPEN CURSOR statement, the database cursor is positioned in front of the first line of the result set.

FETCH

This statement extracts the requested rows (using the addition INTO or APPENDING) from the results set of the database cursor from the current cursor position and assigns these rows to the data objects specified in the results set. If an internal table is specified after INTO or APPENDING, then either all rows are extracted, or as many as specified in the addition PACKAGE SIZE. The statement FETCH moves the position of the database cursor by the amount of extracted lines to the next line to be extracted.

我寫了一個(gè)很簡(jiǎn)單的report 驗(yàn)證:

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: 此時(shí)從ST05里觀察到表COMM_PRODUCT里總共被掃描的記錄數(shù)量是1447.

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

對(duì)ST05里的字段Recs按F1,查看說明:

這個(gè)1447是怎么來的呢?因?yàn)槲襉PEN CURSOR時(shí)候沒有指定任何條件,所以在OPEN CURSOR時(shí),DB把整個(gè)product表的所有記錄視為一個(gè)結(jié)果集,然后只返回指定package size的條數(shù)。

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

而在我的測(cè)試系統(tǒng)里,表COMM_PRODUCT總共就包含1447條記錄。

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

重復(fù)執(zhí)行測(cè)試report。ST05發(fā)現(xiàn)被掃描的記錄數(shù)變成了1450,證明我們的結(jié)論是正確的。

再做一個(gè)驗(yàn)證:表COMM_PRODUCT里面有prefix為JERRY06152012開頭的3條記錄:

修改上述的測(cè)試report,添加一個(gè)WHERE查詢條件:

OPEN CURSOR lv_cursor FOR SELECT product_guid FROM comm_product

WHERE product_id LIKE "JERRY06152012%".

第一次執(zhí)行size = 1

Recs變成3了,因?yàn)槠ヅ銸PEN CURSOR條件的確實(shí)只有3條記錄

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

結(jié)論

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

Through the verification above, this understanding is wrong.

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

用下面的代碼測(cè)試:

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

Num = 1

Num = 143

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

但SELECT UP TO XX ROWS不能像OPEN CURSOR那樣能夠在WHILE循環(huán)里面反復(fù)執(zhí)行,它不具備像OPEN CURSOR那樣的機(jī)制,使得其能夠記住當(dāng)前正在操作的記錄在結(jié)果集里的位置。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/19204.html

相關(guān)文章

  • ABAP開發(fā)知識(shí)點(diǎn)整理

    摘要:前提是類型可以轉(zhuǎn)換成類型的字段,否則會(huì)發(fā)生或者的錯(cuò)誤。程序有激活時(shí)自動(dòng)執(zhí)行的特點(diǎn)。讀取數(shù)據(jù)庫表所有字段時(shí)使用。這種表在語言里稱為內(nèi)表。語句用于刪除重復(fù)值。 ABA...

    LancerComet 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<