假使读者是Open SQL的菜鸟澳门永利娱乐总站

S/肆 HANA 170玖 已经在多少个月前发布,随之而来的是ABAP 柒.5二。

本文翻译了履新文档中有关Open SQL的局部。

倘诺读者是Open SQL的新手,请不要从本文看起。更适于的教程是:A complete
guide to OpenSQL statements – Step-by-step tutorial with
screenshots

 

正文链接:http://www.cnblogs.com/hhelibeb/p/7941300.html

壹,内表作为数据源

前些天得以将内表钦命为查询语句的数据源。若是内表数据要求传递给数据库的话,则不得不在局地数据库上运转。

例子:

DATA itab TYPE HASHED TABLE OF scarr
          WITH UNIQUE KEY mandt carrid.

IF NOT cl_abap_dbfeatures=>use_features(
         EXPORTING
           requested_features =
             VALUE #( ( cl_abap_dbfeatures=>itabs_in_from_clause ) ) ).
  cl_demo_output=>display(
    `System does not support internal tables as data source` ).
  RETURN.
ENDIF.

itab =  VALUE #( ( carrid = 'LH' carrname = 'L.H.' )
                 ( carrid = 'UA' carrname = 'U.A.' ) ).

SELECT scarr~carrid, scarr~carrname, spfli~connid
       FROM @itab AS scarr
         INNER JOIN spfli ON scarr~carrid = spfli~carrid
       INTO TABLE @DATA(result)
       ##db_feature_mode[itabs_in_from_clause].

cl_demo_output=>display( result ).

贰,关系表明式

原则表达式现援助以下情形:

  • 能够对字符类数据类型大小比较,并且不再限制N类型。
  • 操作符BETWEEN不再限制N类型,SQL表明式今后得以在右边手使用了。
  • 今日也协助LIKE操作符。

三,转变函数

新的类型转变函数BINTOHEXHEXTOBIN现今能够在SQL表明式中把byte
strings调换为character strings,这种意义在CAST表明式中是不可行的。

示范程序,能够看出三种转移格局的结果是均等的:

 SELECT SINGLE id AS uuid32, hextobin( id ) AS uuid16
       FROM iwreferenc
       WHERE tcode = 'SE38'
       INTO @DATA(wa).

IF sy-subrc = 0.
  DATA uuid16 LIKE wa-uuid16.
  cl_system_uuid=>convert_uuid_c32_static(
    EXPORTING
      uuid          =     wa-uuid32
    IMPORTING
      uuid_x16      =     uuid16 ).
  ASSERT wa-uuid16 = uuid16.
ENDIF.

 

四,路线表明式

以下特征现在在渠道表明式(path
expression)中可用:

  • 在传参的空白部分、属性方括号的空域部分和斜杠\前的地方,路线表明式能够分开为多个代码行。
  • 对象数据也是CDS表函数(table
    function)的时候,也得以应用Association了。
  • 参数能够在门路表明式association的后边传递。由此能够钦赐带有参数的CDS
    entities作为association的数据源。
  • 在路线表达式中,以往得以钦点join表达式的cardinality和花色作为质量。
  • association的过滤条件今后得以在路线表达式中钦赐。

五,访问调控

新的重大字WITH PRIVILEGED
ACCESS
能够关闭CDS的访问调节

6,子查询中的O奥迪Q5DELX570 BY和UP TO, OFFSET

在子查询中,未来得以应用OSportageDELacrosse BY子句和叠合项UP TO,
OFFSET了。不过,不是兼备数据库都协助在子查询中运作OHighlanderDEXC90 BY。

专注:在子查询中,UP TO只好用在OEnclaveDECRUISER BY子句前边,附加项OFFSET也只可以在UP
TO后边钦命。

7,LFET OUT JOIN中的Cardinality

在LFET OUTELacrosse JOIN中,能够用附加项ONE TO MANY钦赐Cardinality。它能够被SAP
HANA识别为1种优化表达。

八,SELECT列表中的FOPRADO ALL ENTRAV四IES IN和字符串

在在此以前的狂暴格局语法检查中,SELECT语句的叠合项FOR
ALL ENTRubiconIES
IN无法和SELECT列表中类型为ST汉兰达ING和RAWST智跑ING可能LCHENVISION和LRAW的列一齐出现。未来这一个限制已经被移除,语法检查只会对此提醒3个警戒,而不是错误。

玖,严峻格局的语法检查

壹旦您用到了上面列出的Open SQL中的任1新性子,语法检查会以严俊情势运作。

10,Client处理

在切换Client读取CDS entities时,附加项USING
CLIENT
CLIENT
SPECIFIED
会选拔以下(更严谨的)规则:

  • CDS访问调节不会在跨Client访问时职业。因而,附加项USING
    CLIENT
    CLIENT
    SPECIFIED
    只幸而CDS
    entities的访问调控被关闭的时候使用,即申明为AccessControl.authorizationCheck.#NOT_ALLOWED,大概查询语句中央银行使了上文5中的WITH
    PRIVILEGED
    ACCESS
    时。
  • 路线表明式只幸亏自行Client处理展开的时候使用。不可能使用CLIENT
    SPECIFIED
    ,防止路线表明式中的association中的FROM子句中的指标数据是钦命Client(Client-specific)的数据源(?),association的源数据源也不可能是内定客户端的。

11,Open SQL中的代理服务

CL_OSQL_REPLACE能够在ABAP
Unit单元测试上将数据库访问重定向至访问此外数据库的Open SQL。

此类只还好测试类中选用。

事必躬亲程序:DEMO_CL_OSQL_REPLACE

 

相关文章