在合并查询中使用变量会引发不支持的错误

2020-09-14 20:15发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) HI 我正在HANA程...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


HI

我正在HANA程序中编写合并查询。 在完整堆栈的Web IDE中。 正常的合并命令有效,但是当我尝试在其中使用变量时,它会抛出"此处不支持的表达式"。

任何人都知道如何解决它。 如果此功能正在开发中,那么它将在何时发布。 或这是一个错误。 或带有合并的变量通常不起作用。 或HDI xs高级问题。

请帮助

感谢和问候

Rakshit Chopra

5条回答
野沐沐
2020-09-14 20:50 .采纳回答

我投入了自己的时间和精力来构建可复制的示例,发现这确实是对MERGE INTO命令的当前(HANA 2.00.33)实现的限制。

当人们尝试使用占位符执行MERGE命令时,这一点显而易见:

 SAP DBTech JDBC:[467]:无法使用参数变量:STARTTIME:第8行第41行(在pos 229处)

在SQLScript嵌入式SQL中,针对同一问题的错误消息看起来有些不同:

 SAP DBTech JDBC:[7]:不支持的功能:" DEVDUDE"。" merge_t1_from_t2":第8列第9行(位置167):
 此处不支持的表达式:__TYPED_LONGDATE __(:1):第12行第34行(在pos 542)
 

事实上,这就是让我思考解决方法的原因,并显示了在提出问题或提出支持事件时提供所有必要信息(例如实际错误消息和可重现的示例)非常重要。

解决方法是使用 bind_as_value() SQL脚本中的命令修饰符:

创建或替换过程" merge_t1_from_t2"(
     在startTime时间戳中,
     IN endTime时间戳
 )
    语言SQLSCRIPT
    SQL安全调用者
 开始
         合并到t1
 使用方法
 ( 选择
 col1,
 col2,
 sum(col3)作为sum_col3
 从t2开始
 其中" created_time"> =:startTime和" created_time" <:endTime
 按col1分组,col2)t2_b
 开启t1.col1 = t2_b.col1
 和t1。" created_time" = bind_as_value(:startTime)
      
         匹配后更新集
             t1.col1 = t2_b.col1,
             t1.col2 = t2_b.col2,
             t1.sum_col3 = t2_b.sum_col3
        
         未匹配时插入
                  (col1,col2,sum_col3," created_time")
           VALUES(t2_b.col1,t2_b.col2,t2_b.sum_col3,bind_as_value(:startTime));
 END; 

一周热门 更多>