- Native SQL
-
- SQL概要
-
- OPEN SQL读取数据
-
-
- Select
-
Select <lines> <columns>...
Select signle <cols>.... where.
列去重数据
Select distinct <cols>... where...
当取多条数据时,select结果会保存到内表中。
Select ... into...语句的结果不是保存在内保中,而是保存到了wa中,这里就要加一个endselect语句。
【如果是select into wa,就要使用endselect, 在endselect前输出所有的数据记录】
同样使用as来命名别名
<cols> As <alias>
动态select,即表名或者字段名,或者条件用变量来表示
对于动态select使用(dobj)来表示
-
-
- Into
-
Into 是存储select语句查询的结果值的目的地
可以是结构体,也可以是内表,也可以是字段
结构体
当查询一条语句时,使用wa,
此时使用corresponding fields of 语句会自动找到相同字段名匹配赋值。
Select ...
Into [CORRESPONGDING FIELDS OF ] wa.
内表
Select ...
Into| APPEND [CORRESPONGDING FIELDS OF ] TABLE gv_itab PACKAGE SIZE n...
PACKAGE SIZE n...
表示,每次只读取n调数据添加到内表中。
此时注意要用endselect。
单字段
查询表个别子弹或者使用aggregate函数时,
但前提是这两个字段不能存在空白
Select carrid connid into (gv_carrid, gv_connid) from sfligth.
-
-
- From
-
Client specified 解除自动client设置。
BY PASSING BUFFER,不会从SAP本地缓冲器中读取数据,直接访问数据库读取数据
UP TO n ROWS,限制查询的个数。
静态选择表名
动态选择表名:(dobj)
JOIN语句
Inner join 与outer join
限制查询个数
静态选择表名
Select … from <dbtab> [AS <alias>] <options>
动态选择表
Select ... from (dobj)
join语句
Select ...
from <tab>
[inner] join <dbtab> [as alias] on <cond> [options]...
select single a~carrid b~carname into corresponding fields of gs_str from sflight as a inner join scarr as b on a~carrid EQ b~carrid where a~carrid = 'AA'. |
Inner join 与 outer join
Select ...
From <tab>
Left [outer] join <dbtab> [as alias]
On <connd>
<options>
限制查询个数
UP TO <n> ROWS
Select ... from <tab> UP TO <n> ROWS.
-
-
- Where
-
EQ =
NE <> ><
LT <
LE ≤
GT >
GE ≥
范围
WHERE s [not] between <f1> AND <f2>
字符串比较
Like
List value
[not] In ()
动态条件
将条件拼接为一个字符串,然后再where条件中,动态调用这个字符串变量
For all entries
Select ... for all entries in <itab>
Where <cond>
For all entries 与select的嵌套语句和子查询功能类似,
使用时,where语句中的条件必须是itab中存在的字段
-
-
- Grouping
-
Select <f1> <f2> <agg>...
Group by <f1> <f2>
Avg, count, max, min, stddev, sum
Group by 也可以动态指定。
Having,在group by之后的条件选择。
-
-
- Order by
-
Order by primary key [descending| ascending]
-
-
- Subquery
-
就是在select中嵌套select。
-
- OPEN SQL修改数据
-
-
- Insert
-
INSERT INTO <target> VALUES <wa>.
INSERT <target> FROM <wa>.
INSERT <target> FROM TABLE <itab> [ACCEPTIONG DUPLICATE KEYS].
这个语句是为了避免插入相同主键的数据是报错dump error
-
-
- Update
-
UPDATE INTO <target> <lines>.
UPDATE <target> FROM <wa>.
UPDATE <target> FROM TABLE <itab>.
UPDATE <target> SET <set1> <set2> WHERE <connd>.
-
-
- Delete
-
DELETE <target> FROM <wa>.
DELETE <dbtab>.
DELETE FROM <target> WHERE <connd>.
-
-
- Modify
-
MODIFY即有update的功能也有insert的功能,当数据库中表存在该值的时候刽update,不存在的时候,会insert
MODIFY <target> <lines>.
MODIFY <target> FROM <wa>.
MODIFY <target> FROM TABLE <itab>.
-
- NATIVE SQL
优点:可以直接访问数据库的表,可以实现OPENSQL中无法实现的sql
EXEC SQL.
<NATIVE SQL >
ENDEXCE.