Appearance
OPEN SQL
一、SQL定义
SQL 是Structured Query Language 的缩写,是在关系数据库中常使用的标准语言。它共分为以下3种类型,在此3种类型中,ABAP程序的OPENSQL里只允许使用DML语言。
- Data ManipulationLanguage(DML):处理数据的语言,是用于查询,插入,删除,更新数据库数据的语言。
- Data Definition Language(DDL):定义数据的语言,是应用程序与数据库管理系统之间传递数据的接口,一般用于创建数据库。
- Data ControlLanguage(DCL):控制数据的语言,是为了确保数据完整性、安全性及权限控制、恢复而使用的语言,一般用于保护数据。
二、SQL种类
SQL语言包含OPENSQL
和 NATIVESQL
两种。OPENSQL只有在 ABAP 语言中使用,通过数据库接口解析成 NATIVESQL后才能连接到数据库中。因此数据库中使用的SQL语言是 NATIVE SQL
。
三、 OPENSQL 5 NATIVESQL
应用程序-数据库服务器的 SQL流程器如图所示。
1.OPEN SQL
OPEN SQL是由创建数据库数据的ABAP命令构成的,在不同的DBMS(数据库管理系统)环境下其语法相同。OPENSQL不能使用DDL、DCL,只能使用类似于SELECT语句的DML语言。另外,还可以使用本地缓冲器,并且比NATIVESQL的使用方法简单。ABAP程序有激活时自动执行 SytaxCheck 的特点。
OPEN SQL里经常使用的命令如下表。所有OPENSQL执行成功都会返回系统变量SY-SUBRC为0(失败则返回0以外的值),系统变量SY-DBCNT返回数据的个数。
关键字 | 功能 |
---|---|
SELECT | 从数据库表中读取数据 |
INSERT | 往数据库表中追加数据 |
UPDATE | 修改数据库表的数据 |
MODIFY | 执行INSERT+UPDATE 功能UPDATE:数据库表中已存在此数据时(以kcy值区分是否存在)INSERT:数据库表中不存在此数据时(以key值区分是否存在> |
DELETE | 删除敖据库表数据 |
2. NATIVE SQL
NATIVE SQL语言可以直接连接到数据库使用DML、DDL语言。DDL语言可以直接创建/修改数据库表。还可以使用OPENSQL的命令语句(SELECT、UPDATE、DELETE 等),并且无法用 OPEN SQL 解决的问题可以通过 NATIVE SQL 解决。
text
SAP 一般使用 Oracle 数据库。用 OPENSQL无法实现的复杂 SQL语句,可以通过Oracle的
NATIVE SQL实现精确的数据查询。NATIVE SQL不经过数据库接口而是直接将数据传送到数据库服务器中。
3.SQL与本地缓冲器
SAP本地缓冲器是R/3体系结构支持的技术,它主要负责减小数据库负荷
。但是得在数据库表的技术设定里设置使用缓冲器。缓冲器的设置方法请参考“第7章ABAP数据 字典”
abap
SELECT *FROM mare WHERE werks ='1 101'
IF SY-SUBRC EQ O.
WRITE marc.
EXIT.
ENDIF.
ENDSELECT
上面所示的 SQL 语句运行顺序如图所示
下面分析[图 3-5]所示的 SQL 执行顺序:
- 执行从数据库表 MARC 中查询 WERKS='1101'数据的 SQL 语句;
- 在数据库接口OPENSQL被解析成NATIVESQL,再从数据库表MARC中查询WERKS 字段值为'1101’的数据。
- 数据库表MARC中存在3件 WERKS='1101'的数据,这3件数据保存在本地缓冲器中。
- SQL语句 SY-SUBRC EQ 0.即是指从数据库中取得数据的语句执行成功,然后执行EXIT 语句跳出IF 语句,显示第一个值为"1101'的数据。
- 重新执行SQL,语句时由于本地缓冲器中已经存在 WERKS='1101'的数据,因此不用再次访问数据库,直接在本地缓冲器中就可以取得数据。