new open SQL ABAP语法错误,逗号和转义符变量 when escaped, all host variables must be escaped using@

为啥要用@?

我的select 后面的字段用逗号分隔了:
在这里插入图片描述
然后get了一个错:当用转义符时,所有主变量都得用@转义。
在这里插入图片描述

为啥呢,因为新旧SQL语法它不一样。
把新旧两种语法混合在一起就会有语法错误。
如果你用逗号分隔字段,那就是新open sql那主变量就得用@转义。
就是变量啊,工作区间啊,内表啊这些本地变量,如果逻辑用新SQL就得用@ 。用@ 来区分本地变量和外部变量。这个本地和外地我觉得就是方法内的变量和类的变量。但是也极大可能不是这个意思。

那么啥是新open SQL?我查了一下,发现它不就是和Oracle的SQL语句更接近了,有些功能可以用了。而且说为了代码下移做了优化啥的,具体不知道。来看看例子:
*20220608 就是HANA的SQL语法

文章目录

1. 用@转义

在这里插入图片描述
这个也就是个HANA和ABAP的变量定义不一样了。
如果用ABAP的变量定义,那么得统统定义一遍,但是这里对于内表的定义就只用@DATA,对于工作区间的定义就只是DATA了:
在这里插入图片描述
在HANA里面语法就直接变成了:
减少了很多条定义语句。
在这里插入图片描述

用常量检查,看是否存在条目。
这个ABAP_TRUE是个常量。类型boolean, 值X。
这个并没有去查啥,只是确定了matnr = 112的这条存在。这个常量值只为了确定这条。
在这里插入图片描述
这种明显Oracle的加减乘除语句也可以用了。
在这里插入图片描述
合并两列为一列作为KEY这个列名。新表也是只有Key这一列。一切向Oracle靠拢。
在这里插入图片描述
case when then的语句也能在select里面用了,给个列别名material_type. 这个case里的列分类最后放到material_type里了。直接在数据库层给你搞好了分类了。不用哼哧哼哧loop读表再改了。条条大路通罗马啊。
在这里插入图片描述
以下把search_term改成小写,还前后加了%通配符,为了能跟LIKE一起用。
在这里插入图片描述
还有好多其他功能,感觉要重看一遍Oracle SQL语句。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaomici

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值