從7.40開(kāi)始,SP08可以使用在INTO之后用7.40,SP02引入的聲明運(yùn)算符DATA(...)來(lái)放置內(nèi)聯(lián)聲明。
下面舉例說(shuō)明比較清晰:
DATA id TYPE scarr-carrid.cl_demo_input=>request( CHANGING field = id ).SELECT SINGLE carrname AS name, carrid AS id FROM scarr WHERE carrid = @id INTO @DATA(result).cl_demo_output=>display( result ).看到語(yǔ)法不同了嗎,如果沒(méi)看到,請(qǐng)回到你現(xiàn)有的系統(tǒng)中對(duì)比上面語(yǔ)法是INTO DATA里面的寫(xiě)法,下面說(shuō)一下INTO TABLE里的寫(xiě)法
舉例說(shuō)明:
SELECT carrname AS name, carrid AS id FROM scarr INTO TABLE @DATA(result).cl_demo_output=>display( result ).看到語(yǔ)法不同了嗎根據(jù)SELECT列表中定義的結(jié)果集,聲明基本數(shù)據(jù)對(duì)象,結(jié)構(gòu)或內(nèi)部表。 有關(guān)類型構(gòu)造的詳細(xì)信息,請(qǐng)參閱官方文檔。
將7.40,SP05引入SELECT列表中的SQL表達(dá)式使用7.40,SP08進(jìn)行了增強(qiáng),如下所示:
1、可以在GROUP BY之后使用SQL表達(dá)式
2、可以與聚合一起使用SQL表達(dá)式
3、可以使用SQL表達(dá)式作為聚合的參數(shù)
4、可以使用除簡(jiǎn)單CASE之外的已搜索CASE表達(dá)式
對(duì)上述的描述,下面舉例說(shuō)明更清楚一點(diǎn)
SELECT num1, num2, CASE WHEN col1 < 50 AND col2 < 50 THEN @both_l WHEN col1 >= 50 AND col2 >= 50 THEN @both_gt ELSE @others END AS group FROM demo_exPRessions ORDER BY group INTO TABLE @DATA(results).在SELECT列表中,可以使用語(yǔ)法data_source?*從7.40,SP08開(kāi)始指定數(shù)據(jù)源的所有列。 這在使用連接時(shí)很方便。舉例說(shuō)明:
SELECT scarr~carrname, spfli~*, scarr~url FROM scarr INNER JOIN spfli ON scarr~carrid = spfli~carrid INTO TABLE @DATA(result).1、從7.40,SP08開(kāi)始,INTO子句可以和應(yīng)該(haha)在SELECT語(yǔ)句的其他子句之后使用。 那些不被視為子句的添加UP TO n ROWS,BYPASSING BUFFER和CONNECTION必須放在INTO子句之后。2、此更改背后的原理是,INTO子句不是標(biāo)準(zhǔn)SQL的一部分,而是定義SQL和ABAP之間的數(shù)據(jù)接口。 為了實(shí)現(xiàn)Open SQL的SQL部分中的未來(lái)增強(qiáng), UNION,必須從SQL部分中刪除INTO子句。
一些限制已刪除。 例如。 從7.40開(kāi)始,SP08可以在SELECT列表中的算術(shù)表達(dá)式的運(yùn)算符前面放一個(gè)減號(hào),可以對(duì)聚合執(zhí)行一個(gè)簡(jiǎn)單的CASE,在ON之后可以在連接條件中使用LIKE和IN(...) 您可以動(dòng)態(tài)地在WHERE之后指定子查詢。但是,如果您使用此處列出的任何新功能(如SP05已有的),則將以嚴(yán)格模式執(zhí)行Open SQL的語(yǔ)法檢查,其中應(yīng)用更嚴(yán)格的語(yǔ)法規(guī)則。 例如。 您必須在主機(jī)變量前使用逗號(hào)分隔的列表和轉(zhuǎn)義符號(hào)@。 通過(guò)這種方式,至少在Open SQL ABAP中以向下兼容的方式實(shí)施一個(gè)依賴于發(fā)布的deprecation概念。
|
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注