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 ...
随机推荐
- Winform系列——好用的DataGridview过滤控件(表格的高级搜索功能)
上一篇 Winform系列——好看的DataGridView折叠控件 中主要介绍了DataGridview的表格多级折叠功能.这章主要介绍下最近封装的另一个DataGridview表格高级过滤的功能. ...
- 适用于WebApi的SQL注入过滤器
开发工具:Visual Studio 2017 C#版本:C#7.1 最有效的防止SQL注入的方式是调用数据库时使用参数化查询. 但是如果是接手一个旧的WebApi项目,不想改繁多的数据库访问层的代码 ...
- Redis学习笔记(2)-新建虚拟电脑,安装系统CentOSMini
下载CentOSMini download 点击download,网页显示结果如下 点击红框,跳转至镜像页面,选择任一镜像,下载即可. 新建虚拟机,装载CentOSMini 点击新建 输入名称 输入C ...
- 第一册:lesson eighty nine.
原文: For sale. A:Good afternoon. I believe that the house is for sale. B:That's right. A:May I have a ...
- asp.net core webapi 生成导出excel
/// <summary> /// 下载订单 /// </summary> /// <param name="model"></param ...
- 动态编程(Dynamic Programming)
本文素材来自视频,请自备梯子观看:What Is Dynamic Programming and How To Use It Dynamic Programming:动态编程分为如下几步: 将复杂问题 ...
- [PHP]算法-队列结构的PHP实现
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 1.php数组完全就能实现 2.array_push 从尾部往里压入元素 3.array_shi ...
- Python3 系列之 面向对象篇
面向对象的三大特性:继承.封装和多态 Python 做到胶水语言,当然也支持面向对象的编程模式. 封装 class UserInfo(object): lv = 5 def __init__(self ...
- Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/CanUnbuffer
在执行spark on hive 的时候在 sql.show()处报错 : Exception in thread "main" java.lang.NoClassDefFoun ...
- codevs3002 石子归并 3
题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代价为两堆石子的重量和w[i]+w[i+1].问安排怎样的合并顺序,能够使 ...