2020-09-14 20:15发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
HI
我正在HANA程序中编写合并查询。 在完整堆栈的Web IDE中。 正常的合并命令有效,但是当我尝试在其中使用变量时,它会抛出"此处不支持的表达式"。
任何人都知道如何解决它。 如果此功能正在开发中,那么它将在何时发布。 或这是一个错误。 或带有合并的变量通常不起作用。 或HDI xs高级问题。
请帮助
感谢和问候
Rakshit Chopra
我投入了自己的时间和精力来构建可复制的示例,发现这确实是对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() a> 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;
没有代码-没有帮助!
向我们显示您的代码以及什么不起作用,我们可能会提供帮助。
在引用变量时,代码似乎缺少冒号(:)。
创建过程" xyz :: abc"( 在startTime时间戳中, IN endTime时间戳 ) 语言SQLSCRIPT SQL安全调用者 开始 合并为" xyz :: table1" t1 使用方法 ( 选择 " column_1", " column_2", sum(" column_3")as" sum_column_3" 来自" xyz :: table2" 其中" created_time"> =:startTime 和" created_time" <:endTime 按" column_1"," column_1"分组)t2 开启t1。" column_1" = t2。" column_1" 和t1。" created_time" =:startTime 匹配后更新集 t1。" column_1" = t2。" column_1", t1。" column_2" = t2。" column_2", t1。" sum_column_3" = t2。" sum_column_3" 未匹配时插入 (" column_1", " column_2", " sum_column_3", " created_time" )值( t2。" column_1", t2。" column_2", t2。" sum_column_3", :开始时间 ); 结束;
由于该问题缺少可复制的示例(该表没有DDL,没有测试数据)和重要信息(HANA的修订版本),因此该答案仅涵盖明显的错误。 此代码可能还会有更多问题。
我无法编辑问题,因此在此处发布代码
创建过程" xyz :: abc"( 在startTime时间戳中, IN endTime时间戳 ) 语言SQLSCRIPT SQL安全调用者 开始 合并为" xyz :: table1" t1 使用方法 ( 选择 " column_1", " colume_2", sum(" colume_3")为" sum_column_3" 来自" xyz :: table2" 其中" created_time"> = startTime," created_time"
在这里,如果我用恒定值或current_timestamp和add_seconds(current_timestamp,3600)替换startTime和endTime变量,则可以正常工作。
如果您想让任何人重现此问题,请提供DDL代码以正确设置表。
可悲的是,您开发过程中的描述,故事,故事和经验报告不是在HANA上执行的。
最多设置5个标签!
我投入了自己的时间和精力来构建可复制的示例,发现这确实是对MERGE INTO命令的当前(HANA 2.00.33)实现的限制。
当人们尝试使用占位符执行MERGE命令时,这一点显而易见:
在SQLScript嵌入式SQL中,针对同一问题的错误消息看起来有些不同:
事实上,这就是让我思考解决方法的原因,并显示了在提出问题或提出支持事件时提供所有必要信息(例如实际错误消息和可重现的示例)非常重要。
解决方法是使用 bind_as_value() a> SQL脚本中的命令修饰符:
没有代码-没有帮助!
向我们显示您的代码以及什么不起作用,我们可能会提供帮助。
在引用变量时,代码似乎缺少冒号(:)。
由于该问题缺少可复制的示例(该表没有DDL,没有测试数据)和重要信息(HANA的修订版本),因此该答案仅涵盖明显的错误。 此代码可能还会有更多问题。
我无法编辑问题,因此在此处发布代码
在这里,如果我用恒定值或current_timestamp和add_seconds(current_timestamp,3600)替换startTime和endTime变量,则可以正常工作。
如果您想让任何人重现此问题,请提供DDL代码以正确设置表。
可悲的是,您开发过程中的描述,故事,故事和经验报告不是在HANA上执行的。
一周热门 更多>