Open SQL能够方便的实现数据库数据的读取及修改,其对数据库主要操作语法包括:SELECT、UPDATE、INSERT、DELETE及MODIFY。
      Open SQL的执行状态通过系统变量SY-SUBRC来表现,如果SY-SUBRC值为0,则表示Open SQ执行成功,如果不为0,则表示执行失败。

      1.SELECT语法结构
     
SELECT 语句用于实现对数据的查询,其语法结构如下:
      SELECT <result> FROM <dbtab>
      INTO <target>
      WHERE <condition>
      GROUP BY <fields> ORDER BY <fields>

      其中各关键字的属性描述如下:
      SELECT <result>:具体的查询字段。
      SELECT SINGLE:定义单行查询。
      FROM <dbtab>:所查询的透明表。
      INTO <target>:查询结果赋值对象,赋值到具体表或结构体。
      INTO (<f1>...<fn>):将查询结果赋值到具体字段。
      INTO CORRESPONDING FILES OF <itab>:将查询结果按字段匹配赋值给具体的表或者结构体。
      WHERE <condition>:查询条件。
      GROUP BY <fileds>:分组查询条件。
      ORDER BY <fields>:排序条件。

      [For Example]

TABLES:SPFLI.

      DATA sitab LIKE TABLE OF SPFLI WITH HEADER LINE.
      SELECT SINGLE CarrId ConnId Airpfrom Airpto FROM SPFLI INTO CORRESPONDING FIELDS OF sitab.
      WRITE: / 'sitab-CarrId=',sitab-CarrId,
             / 'sitab-ConnId=',sitab-ConnId,
             / 'sitab-Airpfrom=',sitab-Airpfrom,
              / 'siab-Airpto=',sitab-Airpto.

      输出结果如下截图:
     

          

 

           使用SELECT...ENDSELECT语法能循环读取及操作查询,通过系统参数SY-DBCNT可以获取当前读取数据的行数,该语法中不能加入SINGLE、INTO CORRESPONDING FIELDS、TABLE等关键字,中间可以使用CHECK语法来判断查询值,如下:

           [For Example]

      TABLES:SBOOK.

      DATA:COUNTS TYPE I,TOTAL TYPE DECIMALS 2,AVERAGE TYPE F.
      DATA:CONNID LIKE SBOOK-CONNID.

      *SELECT SINGLE LUGGWEIGHT FROM SBOOK INTO TOTAL. 
      *WRITE TOTAL.

      SELECT CONNID COUNT(*) SUM( LUGGWEIGHT ) AVG( LUGGWEIGHT )
      INTO (CONNID,COUNTS,TOTAL,AVERAGE)
      FROM SBOOK
      *WHERE CARRID = 'LH' AND FLDATE = '19950228' 
      GROUP BY CONNID.
      WRITE: / 'SY-DBCNT=',SY-DBCNT,
             / 'CONNID=', CONNID,
             / 'COUNTS=',COUNTS,
             / 'TOTAL=',TOTAL,
             / 'AVERAGE=',AVERAGE.
  
      CHECK TOTAL > 10.
       WRITE: / 'THW SUM WEIGHT MORE THAN 10.'.
     ENDSELECT.

     输出结果如下截图:
        

 

         2.SELECT常用标准函数

         Open SQL 常用的标准函数如下:
         COUNT():统计查询总数。
         SUM():统计表中某个数值字段的总和。
         AVG():统计表中某个数值字段的平均值。
         MAX():统计表中某个字段的最大值。
         MIN() :统计表中某个字段的最小值。