SAP ABAP 本地SQL概述
术语“本地SQL"是指可以静态传输到数据库接口的本机SQL接口的所有语句。 本地SQL语句不属于ABAP的语言范围,不遵循ABAP语法。 ABAP仅包含用于隔离其中可以列出Native SQL语句的程序段的语句。
在本机SQL中,主要可以使用特定于数据库的SQL语句。 这些将从本地SQL接口不变地传输到数据库系统并执行。 可以使用相关数据库的完整SQL语言范围,并且所寻址的数据库表不必在ABAP字典中声明。 还有一小组SAP特定的本地SQL语句,由本地SQL接口以特定方式处理。
要使用本地SQL语句,必须在其前面加上EXEC SQL语句,并以ENDEXEC语句结束。
以下是语法:
EXEC SQL PERFORMING <form>. <Native SQL statement> ENDEXEC.
这些语句定义ABAP程序中可以列出一个或多个Native SQL语句的区域。 输入的语句将传递到Native SQL界面,然后按如下所示进行处理:
对于所寻址的数据库系统的程序接口有效的所有SQL语句都可以在EXEC和ENDEXEC之间列出,特别是DDL(数据定义语言)语句。
这些SQL语句从Native SQL接口传递到数据库系统基本不变。 语法规则由数据库系统指定,特别是数据库对象的区分大小写规则。
如果语法允许单个语句之间的分隔符,则可以在EXEC和ENDEXEC之间包括许多本地SQL语句。
可以在EXEC和ENDEXEC之间指定SAP特定的本地SQL语言元素。 这些语句不会直接从Native SQL接口传递到数据库,但会适当地进行转换。
例子
SPFLI是用于存储航班时刻表信息的标准SAP表。 这在R / 3 SAP系统中可用,具体取决于版本和发布级别。 在将表名称SPFLI输入到相关SAP事务(如SE11或SE80)中时,可以查看此信息。 您还可以使用这两个事务查看此数据库表中包含的数据。
REPORT ZDEMONATIVE_SQL. DATA: BEGIN OF wa, connid TYPE SPFLI-connid, cityfrom TYPE SPFLI-cityfrom, cityto TYPE SPFLI-cityto, END OF wa. DATA c1 TYPE SPFLI-carrid VALUE 'LH'. EXEC SQL PERFORMING loop_output. SELECT connid, cityfrom, cityto INTO :wa FROM SPFLI WHERE carrid = :c1 ENDEXEC. FORM loop_output. WRITE: / wa-connid, wa-cityfrom, wa-cityto. ENDFORM.
上面的代码产生以下输出:
0400 FRANKFURT NEW YORK 2402 FRANKFURT BERLIN 0402 FRANKFURT NEW YORK