国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Native SQL

2019-11-08 20:33:57
字體:
供稿:網(wǎng)友

Native SQL允許你針對(duì)數(shù)據(jù)庫來使用原生的SQL,這些SQL可能是標(biāo)準(zhǔn)的SQL,也可以是某數(shù)據(jù)庫特定的SQL。如果使用database-specific SQL語句,則數(shù)據(jù)庫不能更換,否則請(qǐng)使用Open SQL。

 

本地SQL會(huì)繞過R/3 database interface,操作時(shí)不會(huì)記錄日志,不會(huì)同步應(yīng)用服務(wù)器上的database buffer。另外,使用ABAP Dictionary定義的類型為L(zhǎng)CHR or LRAW的長(zhǎng)列時(shí),這些列需要使用Open SQL來讀取,因?yàn)樽x取這些字段時(shí),還需要使用另外存儲(chǔ)此類型長(zhǎng)列的長(zhǎng)度信息,才能準(zhǔn)確讀出。最后,本地SQL是不會(huì)自動(dòng)能客戶端字段MANDT字段進(jìn)行處理,該字段會(huì)像普通字段那樣對(duì)待。

 

為了事務(wù)的一致性,在本地SQL中不要使用事務(wù)控制的語句(如COMMIT, ROLLBACK WORK),以及事務(wù)設(shè)置語句(如級(jí)別設(shè)置)

 

普通SQL

EXEC SQL [PERFORMING <form>].<Native SQL statement>[;]

ENDEXEC.

Native SQL statement后面的分號(hào)是可選的,但不能是“.”

如果Native SQL 是一個(gè)從表里SELECT statement時(shí),你可以通過PERFORMING選項(xiàng)的<form>里來一行行讀取,如果不需要處理返回結(jié)果,或者是UPDATE、DELETE語句時(shí),可以省略選項(xiàng)。

在ENDEXEC執(zhí)行完后,SY-DBCNT存儲(chǔ)了處理的數(shù)據(jù)行數(shù)。在幾乎所有情況下,在執(zhí)行ENDEXEC 后,SY-SUBRC都會(huì)為0,但是游標(biāo)除外,在After FETCH之后,如果沒有讀取到數(shù)據(jù),SY-SUBRC將會(huì)為4。

 

DATA:BEGIN OF wa,  connid TYPE spfli-connid,  cityfrom TYPE spfli-cityfrom,  cityto TYPE spfli-cityto,END OF wa.DATA c1 TYPE spfli-carrid VALUE'LH'.

"Native SQL語句不能以句點(diǎn)號(hào)結(jié)尾;

"不能在EXEC SQL…ENDEXEC間有注釋,即不能有星號(hào)與雙引號(hào)的出現(xiàn);

"另外還要注意數(shù)據(jù)庫系統(tǒng)大小寫是否敏感;

"參數(shù)占位符使用冒號(hào),而不是問號(hào);EXEC SQL PERFORMING loop_output.  SELECT connid, cityfrom, cityto    INTO :wa    FROM spfli    WHERE carrid =:c1ENDEXEC.FORM loop_output.  WRITE: / wa-connid,wa-cityfrom,wa-cityto.ENDFORM

 

或者將上面的INTO :wa替換為:

INTO :wa-connid,:wa-cityfrom,:wa-cityto

也可以。

 

image210

調(diào)用存儲(chǔ)過程

EXECUTE PROCEDURE<name> ( <parameter list> )

參數(shù)以逗號(hào)分隔,并需要IN、OUT 來指定是輸入還是輸出參數(shù),或者是使用INOUT來表示即是輸入也是輸出參數(shù)

EXEC SQL.  EXECUTE PROCEDURE proc1( IN :x,OUT :y )ENDEXEC.

游標(biāo)處理:

?OPEN<cursor name>FOR<statement>

?FETCH NEXT <cursor name>INTO<target(s)>.

?CLOSE<cursor name>

 

DATA:arg1 TYPE string VALUE '800'.TABLES: t001."打開游標(biāo)EXEC SQL.  OPEN c1 FOR SELECTMANDT, BUKRS FROM T001              WHERE MANDT = :arg1 AND BUKRS >= 'ZA01'ENDEXEC.DO.  "讀取游標(biāo)  EXEC SQL.    FETCH NEXT c1 INTO :t001-mandt, :t001-bukrs  ENDEXEC.  IF sy-subrc <>0.    EXIT.  ELSE.    WRITE: / t001-mandt, t001-bukrs.  ENDIF.ENDDO."關(guān)閉游標(biāo)EXEC SQL.  CLOSE c1ENDEXEC.

原文出自:www.cnblogs.com/jiangzhengjun
上一篇:Open SQL詳解

下一篇:Redis安裝與配置

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 友谊县| 宝丰县| 合水县| 阳山县| 荆门市| 湛江市| 南陵县| 华坪县| 逊克县| 崇信县| 龙州县| 叶城县| 镇巴县| 赤水市| 高邑县| 屯昌县| 香港 | 虎林市| 缙云县| 贞丰县| 华池县| 晋州市| 昭苏县| 达日县| 博白县| 祁阳县| 视频| 苏尼特右旗| 通江县| 都兰县| 洱源县| 会泽县| 汉阴县| 武冈市| 巴青县| 新巴尔虎右旗| 徐闻县| 手机| 五大连池市| 双峰县| 临颍县|