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 TYPETABLEOF scarr.
· SELECT *
· FROM scarr
· INTOTABLE itab
HAVING carrid = LH .
8,语法检查的“严格模式”
如果在Open SQL中使用了本文中列出的任一新特性,语法检查将以严格模式运行。严格模式比标准模式有着更严格的语句处理。
9,可比较类型
数据库会执行一个用于比较的可比较类型的表。在各种情况下,数据库系统会判断比较的双方是否可比较,如果不可比较,将产生语法错误(在严格模式下)或者语法警告。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/20142.html
cgo相关文章
- sql语句优化之SQL Server(详细整理)
- spring下配置Sql Server 2008 R2数据库连接详解编程语言
- python连接sql server数据库详解编程语言
- jdbc sql server 连接串格式详解编程语言
- JSP连接SQL Server并进行分页代码详解编程语言
- JDBC: 批量处理提高SQL处理速度详解编程语言
- mybatis06–动态sql详解编程语言
- Oralce sql (+) 补充详解编程语言
- PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法详解编程语言
- Ibatis中的动态SQL:isNotNull,isPropertyAvailable,isNotEmpty用法详解编程语言
- ESAPI处理sql注入和xss攻击详解编程语言
- ibatis配置log4j输出sql语句等日志信息详解编程语言
- .NET/ASP.NET/C#/WCF/SQL Server/My SQL/Java/JSP/JDBC/Spring/Spring MVC/PHP/Python/Ruby/Shell/Agile/CSS/HTML/HTTP/Unix/Linux大量PDF书籍/电子书籍下载, Effective Java 下载详解编程语言
- MySQL创建表:SQL语句实现(mysql创建表的sql语句)
- 使用SQL连接Oracle数据库(sql连接oracle)
- MySQL的更新SQL实用技巧(mysql更新sql)
- Java数据持久层框架 MyBatis之API学习七(动态 SQL详解)编程语言
- Mybatis学习总结(五):动态sql详解编程语言
- SQL Server 性能优化之——T-SQL NOT IN 和 NOT Exists详解编程语言
- ST05 跟踪SQL详解编程语言
- django 执行原生sql形参传递,字段参数传递详解编程语言
- ABAP 7.52 中的Open SQL新特性详解编程语言
- 掌握MySQL执行计划,了解SQL性能分析(mysql执行计划怎么看)
- Oracle和PL/SQL:数据库和编程语言的完美融合(oracle和plsql)
- MySQL查看SQL日志:巧用技巧(mysql查看sql日志)
- 清空MySQL表的Effortless SQL语句(mysql清空表sql)
- sql 注入MSSQL防止SQL注入:强力防护的关键步骤(mssql阻止)
- MySQL快捷执行一键执行SQL语句(mysql一键执行sql)
- Oracle中学习SQL语句的有效技巧(oracle中sql代码)
- 用Oracle SQL开心一整天(oracle sql搞笑)
- Oracle SQL中使用别名的优势(oracle sql别名)