1、如果SQL语句中没有CLIENT SPECIFIED,where语句中是不能出现client的,抽取的数据来自当前的client。
如果SQL语句中有CLIENT SPECIFIED,并且where语句中指定了client,则抽取指定client的相关数据;where语句中没有指定client,则抽取所有client的数据。
视图也可以用以下语句,但是视图必须在词典中预先创建好了,而且维护状态为可读写(视图中的表超过2个就只能读不能写了)。
2.插入一条记录
语句有两种基本形式:
INSERT INTO [CLIENT SPECIFIED] VALUES .
INSERT [CLIENT SPECIFIED] FROM .
和必须有相同的结构。
语句执行后的返回值(sy-subrc)0代表插入成功,4代表失败,可能原因是key值已存在。
3.插入多条记录
语句:INSERT [CLIENT SPECIFIED] FROM TABLE .
语句执行之后,如果所有记录都插入,返回值0.
如果有至少一条插入不成功,会出runtime error,意味着所有记录都不会插入,数据库rollback。这种情况下,如果你想让数据库接受能插入的记录,可以用语句ACCEPTING DUPLICATE KEYS.sy-dbcnt返回的是成功插入的记录数量。
4.改变一条记录(UPDATE)
语句有两种基本形式:
UPDATE [CLIENT SPECIFIED] FROM .
UPDATE [CLIENT SPECIFIED] set = ... = where .
在set语句中可以进行简单的加减运算,如f = f + g,f = f - g。
和必须有相同的结构。
语句执行后的返回值(sy-subrc)一般是0和4.0代表改变成功,4代表失败,可能原因是key值不存在。
5.改变多条记录(UPDATE)
语句有两种基本形式:
UPDATE [CLIENT SPECIFIED] set = ... = where .
UPDATE [CLIENT SPECIFIED] FROM TABLE .
第一种形式是通过条件来改变,语句执行之后,只要有一条记录改变,返回值0;4代表没有一条记录改变。sy-dbcnt返回的是成功改变的记录数量。
第二种形式是通过内表来改变,语句执行之后,0代表全部记录都改变;4代表至少有一条记录没有改变。同样的,sy-dbcnt返回的是成功改变的记录数量。
6.修改一条记录(MODIFY)
语句:MODIFY [CLIENT SPECIFIED] FROM .
MODIFY是SAP特有的,它有些特别,它包含了两个命令 UPDATE & INSERT。
如果MODIFY语句中的记录存在,则UPDATE;否则INSERT。
语句执行之后,0代表处理成功,4代表失败,原因可能是会毁坏一个唯一的secondary index等。
7.修改多条记录(MODIFY)
语句:MODIFY [CLIENT SPECIFIED] FROM TABLE .
语句执行之后,0代表所有的记录处理成功,4代表至少有一条记录失败,原因可能是会毁坏一个唯一的secondary index等。sy-dbcnt返回的是成功改变的记录数量。
8.删除一条记录
语句有两种基本形式:
DELETE FROM [CLIENT SPECIFIED] where .
DELETE [CLIENT SPECIFIED] FROM .
语句执行之后,返回0代表删除成功,4代表失败,可能原因是记录不存在于数据库中。
9.删除多条记录
语句有两种基本形式:
DELETE FROM [CLIENT SPECIFIED] WHERE .
DELETE FROM [CLIENT SPECIFIED] FROM TABLE .
第一种形式是通过条件来删除,语句执行之后,只要有一条记录删除,返回值0;4代表没有一条记录删除。sy-dbcnt返回的是成功删除的记录数量。
第二种形式是通过内表来删除,语句执行之后,0代表全部记录都删除;4代表至少有一条记录没有删除。同样的,sy-dbcnt返回的是成功删除的记录数量。
10.数据库rollback
有两种方式会导致数据库回滚:
A类型的MESSAGE(E.W.I类型的MESSAGE不会触发数据库ROLLBACK)
使用语句ROLLBACK WORK.
阅读(1121) | 评论(0) | 转发(0) |