ABAP數據表的操作


這幾天對於數據標的操作表較多,自己從網上找資料和自己動手操作總結了一些數據表的增刪改查操作,希望對一些初學者有所幫助,僅供參考。

開源的數據庫操作都離不開INSERT、UPDATE、MODIFY和DELETE語句。其中當SY-DBCNT返回為0,則表示操作成功,此外還將返回實際操作的數據行數。需要指明的是Open SQL本身並不進行操作權限的檢查,若需要進行設定,則要在系統中創建授權對象。

一.INSERT語句
Open SQL中的INSERT語句用於向數據庫中插入新條目。
1.插入單行數據:dbtab是內表,wa是工作區。
INSERT INTO dbtab VALUES wa.
 INSERT INTO dbtab FROM wa.

內表:Internal memory table 內存中的表,是外設(屏幕、磁盤,打印機等)和數據庫表數據交換的中介。
 wa為工作區,是與數據庫具有相同結構的數據對象,一般直接基於數據庫結構聲明。該語句也可以將數據插入視圖中,首先該視圖所有字段必須來自同一個數據庫表,而且在數據字典中的maintenance status屬性必須設定為read and change
注:如果相同表關鍵字的數據條目已經存在,則不能重新插入,只能對非關鍵字進行更改(UPDATE,MODIFY)

2.插入多行數據:datab是內表,itab是表
INSERT dbtab FROM TABLES itab.
其中itab是內表,包含希望插入的數據條目。
 注:內表應與數據庫的行結構一致。
 所有條目成功插入,則SY-SUBRC返回0
使用ACCEPTING DUPLICATE可避免該錯誤。
INSERT dbtab FROM TABLE itab ACCEPTING DUPLICATE KEYS.
 ACCEPTING DUPLICATE的效果是:若出現關鍵字相同,返回4,並跳過其再更新所有的其他。

二.UPDATE語句
1.更新單行數據:
UPDATE dbtab SET f1=g1 ... fn=gn WHERE <fix_key>.
 f表組建字段名,g為新設定的值,WHERE為確保只更新單行。
 注:除f=g外還可 f=f+g、f=f-g
通過工作區更改單行數據:
UPDATE dbtab FROM wa.
 2.更新多行數據:
UPDATE dbtab SET f1=g1 ... fi=gi [WHERE <conditions>].
也可以使用SET和WHERE子句同時更新多行數據值;此外不需要在WHERE中限定所有表關鍵字,該語句本身將更新所有滿足條件的數據條目,若不是用WHERE子句,則將更新當前數據集團中的所有數據行。
 注:如果至少有一行數據被更新SY-BUBRC返回0,否則返回4。
 還可通過內表來更新多行數據:
UPDATE target FROM TABLE itab.

三.MODIFY語句
MODIFY語句是SAP的Open SQL中專有語句,該語句相當於INSERT和UPDATE語句的結合。引入期的原因是當更新數據庫操作時,並不確知數據庫中是否遺憾相應的數據行。
1.添加或更新單行:
MODIFY dbtab FROM wa.
注:操作后SY-SUBRC恆為0;SY-DBCNT為1
 2.添加或更新多行:
MODIFY dbtab FROM TABLE itab.
內表itab將覆蓋數據庫表中具有相同主關鍵字的條目。
 注:SY-SUBRC恆為0;SY-DBCNT返回行數
四.DELETE語句
1.刪除單行數據:
DELETE FROM dbtab WHERE <fix_key>.
或 DELETE dbtab FROM wa.
其中WHERE必須指明全部表關鍵字段的值;wa為工作區,若不去dbtab匹配操作將失敗。
2.刪除多行數據:
DELETE FROM dbtab WHERE <condition>.
 DELETE dbtab[CLIENT SPECIFIED] FROM TABLE itab.
注:返回值同MODIFY
 3.刪除多行數據:
 兩種形式:1).通過內表刪除多行數據條目的過程中將內表置為空;2).使用WHERE FIELD LIKE '%'。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM