開源的數據庫操作都離不開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?'%'。
資料來源:網頁鏈接