ABAP 7.40, SP08 中的 Open SQL 新特性
1,使用 data_source~*指定列
在7.40, SP08中,可以在SELECT语句中使用data_source~*来指定选取不同的数据库表、视图的全部列来作为结果集。它也可以和单独指定的列col_spec结合(通过聚合表达式)。
当在结果集使用了data_source~*的时候,语法检查会以严格模式运行。
2,SELECT...INTO后的内联声明
根据SELECT语句的返回结果集,现在可以使用DATA(...)以及转义前缀@来内联声明数据对象、结构、内表。比如:
SELECT * FROM sflight INTO @DATA(ls_sflight) WHERE connid = 'AA'.
3,SQL表达式
在7.40, SP05中引入的SQL表达式,现在扩充了以下内容:
- 操作符CASE可以用于执行复杂case(searched case)和简单case
- 可以在GROUP BY后指定SQL表达式
- 可以在SELECT列表中同时指定SQL表达式和聚合表达式
- 可以在SELECT列表或者HAVING子句中指定SQL表达式作为聚合功能(比如avg)参数
如果使用了任一新特性,语法检查将以严格模式运行。
4,用参数读取CDS视图
从7.40, SP08开始,CDS视图可以在定义时带有使用时分配实参的输入参数。为了使该特性可用,在SELECT的data source可选项部分要添加一个由括号包含起来的、由逗号分割的列表:
( pname1 = act1, pname1 = act2, ... )
因为不是所有数据库系统都支持带有参数的视图,现有一个新类 CL_ABAP_DBFEATURES 和它的方法 USE_FEATURES,它会探测当前数据库系统的支持情况。此外,通过参数访问视图会触发语法检查的警告;该警告可通过pragma隐藏。
5,移除限制
以下先前存在的限制已经移除:
- 函数表达式:
- 从7.40, SP08开始,负号 - 可以直接地放置在一个算术表达式的运算数前,而不需要放在其它算术运算符的后面。
- 从7.40, SP08开始,简单case中的operand1, operand2也可以是SQL表达式。
- 从7.40, SP08开始,SQL表达式也可以和聚合表达式或者GROUP BY一起指定。
- joins:
- 从7.40, SP08开始,操作符LIKE和IN可以在ON条件中使用。
- 从7.40, SP08开始,单独的比较可以通过OR连接或者通过NOT否定。
- 从7.40, SP08开始,外联结不再需要包含至少一个来自左右侧表的列的比较。
- 动态WHERE条件:
- 子查询也可以动态指定了。
如果用到了以上的新规则,那么语法检查将以严格模式运行。
6,INTO子句的位置
从7.40, SP08开始,INTO子句也可以位于SELECT语句的最末位置。在这种情况下,SELECT语句的可选项要指定在INTO的后面。
如果将INTO从句作为最后一个子句,语法检查将以严格模式运行。
7,语法规则的进一步严格检查
从7.40, SP08开始,以下的语法构造将包含错误,并产生语法错误或运行时错误。
- WHERE条件的正确性
聚合表达式之外的在HAVING从句中指定的列必须也在GROUP BY中指定。在7.40, SP08之前,这不会被静态语法检查记录,但是会触发一个可捕获的异常。从7.40, SP08开始,这样产生一个语法检查警告并且触发在严格模式之外无法处理的异常。
例如:DATA itab TYPE TABLE OF scarr.
SELECT *
FROM scarr
INTO TABLE itab
HAVING carrid = 'LH'.
8,语法检查的“严格模式”
如果在Open SQL中使用了本文中列出的任一新特性,语法检查将以严格模式运行。严格模式比标准模式有着更严格的语句处理。
9,可比较类型
数据库会执行一个用于比较的可比较类型的表。在各种情况下,数据库系统会判断比较的双方是否可比较,如果不可比较,将产生语法错误(在严格模式下)或者语法警告。
本文链接:http://www.cnblogs.com/hhelibeb/p/6757244.html
参考链接:ABAP News for 7.40, SP08 – Open SQL
ABAP 7.53 中的ABAP SQL(原Open SQL)新特性
ABAP 7.40, SP08 中的 Open SQL 新特性的更多相关文章
- ABAP 7.52 中的Open SQL新特性
S/4 HANA 1709 已经在几个月前发布,随之而来的是ABAP 7.52. 本文翻译了更新文档中有关Open SQL的部分 本文链接:http://www.cnblogs.com/hhelibe ...
- ElasticSearch7.3学习(三十)----ES7.X SQL新特性解析及使用Java api实现sql功能
一.ES7 sql新特性 1.1 数据准备 创建索引及映射 建立价格.颜色.品牌.售卖日期 四个字段 PUT /tvs PUT /tvs/_mapping { "properties&quo ...
- 简单理解ECMAScript2015中的箭头函数新特性
箭头函数(Arrow functions),是ECMAScript2015中新加的特性,它的产生,主要有以下两个原因:一是使得函数表达式(匿名函数)有更简洁的语法,二是它拥有词法作用域的this值,也 ...
- Java 9中的 9个 新特性
Java 9 中的 9个 新特性 java 7 2011发布,Java 8 2014发布,java9发布于2017年9月21日. 你可能已经听说过 Java 9 的模块系统,但是这个新版本还有许多其它 ...
- 【译】.NET 5. 0 中 Windows Form 的新特性
自从 Windows Form 在 2018 年底开源并移植到 .NET Core 以来,团队和我们的外部贡献者都在忙于修复旧的漏洞和添加新功能.在这篇文章中,我们将讨论 .NET 5.0 中 Win ...
- 【C#】第1章 VS2015中C#6的新特性
分类:C#.VS2015 创建日期:2016-06-12 一.简介 VS2015内置的C#版本为6.0,该版本提供了一些新的语法糖,这里仅列出个人感觉比较有用的几个新功能. 二.几个很有用的新特性 注 ...
- Visual Studio 2015 RC中的ASP.NET新特性和问题修正
(此文章同时发表在本人微信公众号"dotNET每日精华文章") 微软在Build大会上发布了Visual Studio 2015 RC,这也预示着Visual Studio 201 ...
- 在 vs2017 中使用 C# 7 新特性。
几个概念区分: 1.C# C# 是一种.net 语言,与此类似的还有 vb,F#.不同版本的语言要配合相应的解释器才能发挥作用.目前 最新版本 为 C# 7.3. 2.VS VS 是 ...
- Oracle12c中性能优化增强新特性之数据库智能闪存
智能闪存功能最初在XD中引入.从Oracle11.2.0.2开始,除了用于XD存储,还可用于任何闪盘.Oracle12c中,不需卷管理器就可以使用闪盘. 1. 简介 智能闪存在solaris和lin ...
随机推荐
- 编写你的第一个 Java 版 Raft 分布式 KV 存储
前言 本文旨在讲述如何使用 Java 语言实现基于 Raft 算法的,分布式的,KV 结构的存储项目.该项目的背景是为了深入理解 Raft 算法,从而深刻理解分布式环境下数据强一致性该如何实现:该项目 ...
- Winform系列——好用的DataGridview过滤控件(表格的高级搜索功能)
上一篇 Winform系列——好看的DataGridView折叠控件 中主要介绍了DataGridview的表格多级折叠功能.这章主要介绍下最近封装的另一个DataGridview表格高级过滤的功能. ...
- 【转载】阿里云服务器为网站选配Https证书
数字证书是一个经权威授权机构数字签名.包含公开密钥拥有者信息以及公开密钥的文件,是权威机构颁发给网站的可信凭证.最简单的证书包含一个公开密钥.证书名称以及证书授权中心的数字签名,只在特定的时间内有效. ...
- [日常] DNS解析概述
DNS DomainNameSystem域名系统,根据域名查出IP地址 1.dig命令可以显示整个查询的过程 root@VM-38-204-ubuntu:~# dig www.sopans.com / ...
- Docker 系列一(概念原理和安装).
一.概念原理 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间 ...
- 为链表数据结构实现iterator接口
iterator作用 为所有的数据结构提供统一的访问方式. 接口对象 接口对象一共有3个方法,next()方法.return()方法.throw()方法. next() 必填 用于for..of迭代. ...
- 事件处理程序(HTML)
HTML事件处理程序 通过设置HTML标签特性来绑定事件处理程序. 处理方式(如图): 1:会创建一个封装元素属性值的函数 2:会在这个函数中创建一个event事件对象 <form> &l ...
- ajaxJson(常用)
function ajaxJson(method, url, data, callback) { var options = { type: method, url: url, dataType: ' ...
- Ubuntu、deepin 支持 yum
1,首先检测是否安装了build-essential程序包 sudo apt-get install build-essential 2,安装 yum sudo apt-get yum 3,检测是否安 ...
- Ubuntu、deepin 安装 mysql
在 Ubuntu 和 deepin 安装 mysql 是很简单的,只需要几条简单的命令即可 1. sudo apt-get install mysql-server 2. sudo apt-get ...