SAP HANA标量函数拆分字符串

2020-08-19 12:38发布

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

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


大家好,

我从sap博客获得了以下代码,并在我的HANA 2.0系统中进行了测试。 在激活标量函数系统时抛出以下错误。 您能否检查并向我们更新此修补程序!

错误:"语法错误:标量函数对象需要标量函数"

标量函数代码:

  FUNCTION" SPLIT_STRING"(INPUT_STRING VARCHAR(5000),SEPARATOR VARCHAR(1))
 退货表
 (
 " OUTPUT_SPLIT" VARCHAR(5000)
 )
 语言SQLSCRIPT
 SQL安全调用者
 开始
 DECLARE COUNTER INT:= 1;
 DECLARE LOC INT:= 0;

 -检查分隔符是否在:INPUT_STRING中
 从DUMMY中选择LOCATE(:INPUT_STRING,:SEPARATOR)到LOC;
 如果LOC = 0 THEN-如果不是,则仅使用:INPUT_STRING作为返回值
 SPLIT_VALUES = SELECT:INPUT_STRING SINGLE_VAL from DUMMY;
 从:SPLIT_VALUES返回SELECT SINGLE_VAL AS" OUTPUT_SPLIT";
 其他
 SPLIT_VALUES =从DUMMY中选择SUBSTR_BEFORE(:INPUT_STRING,:SEPARATOR)SINGLE_VAL;
 SELECT SUBSTR_AFTER(:INPUT_STRING,:SEPARATOR)||  :SEPARATOR从DUMMY进入INPUT_STRING;
 万一;


 WHILE(LENGTH(:INPUT_STRING)> 0)
 做

 SPLIT_VALUES =

 从DUMMY中选择SUBSTR_BEFORE(:INPUT_STRING,:SEPARATOR)SINGLE_VAL
 联盟
 从:SPLIT_VALUES中选择SINGLE_VAL;

 从DUMMY中选择SUBSTR_AFTER(:INPUT_STRING,:SEPARATOR)进入INPUT_STRING;

 结束时;





 返回

 从:SPLIT_VALUES选择SINGLE_VAL AS" OUTPUT_SPLIT";

 END;  

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

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


大家好,

我从sap博客获得了以下代码,并在我的HANA 2.0系统中进行了测试。 在激活标量函数系统时抛出以下错误。 您能否检查并向我们更新此修补程序!

错误:"语法错误:标量函数对象需要标量函数"

标量函数代码:

  FUNCTION" SPLIT_STRING"(INPUT_STRING VARCHAR(5000),SEPARATOR VARCHAR(1))
 退货表
 (
 " OUTPUT_SPLIT" VARCHAR(5000)
 )
 语言SQLSCRIPT
 SQL安全调用者
 开始
 DECLARE COUNTER INT:= 1;
 DECLARE LOC INT:= 0;

 -检查分隔符是否在:INPUT_STRING中
 从DUMMY中选择LOCATE(:INPUT_STRING,:SEPARATOR)到LOC;
 如果LOC = 0 THEN-如果不是,则仅使用:INPUT_STRING作为返回值
 SPLIT_VALUES = SELECT:INPUT_STRING SINGLE_VAL from DUMMY;
 从:SPLIT_VALUES返回SELECT SINGLE_VAL AS" OUTPUT_SPLIT";
 其他
 SPLIT_VALUES =从DUMMY中选择SUBSTR_BEFORE(:INPUT_STRING,:SEPARATOR)SINGLE_VAL;
 SELECT SUBSTR_AFTER(:INPUT_STRING,:SEPARATOR)||  :SEPARATOR从DUMMY进入INPUT_STRING;
 万一;


 WHILE(LENGTH(:INPUT_STRING)> 0)
 做

 SPLIT_VALUES =

 从DUMMY中选择SUBSTR_BEFORE(:INPUT_STRING,:SEPARATOR)SINGLE_VAL
 联盟
 从:SPLIT_VALUES中选择SINGLE_VAL;

 从DUMMY中选择SUBSTR_AFTER(:INPUT_STRING,:SEPARATOR)进入INPUT_STRING;

 结束时;





 返回

 从:SPLIT_VALUES选择SINGLE_VAL AS" OUTPUT_SPLIT";

 END;  
付费偷看设置
发送
2条回答
悠然的二货
1楼 · 2020-08-19 12:53.采纳回答

您发布的代码指出该函数应该返回一个表。

您写道,您想使用标量函数。

鉴于错误消息,我想您已经复制了 将此代码保存到 .hdbscalarfunction 文件中,并尝试将其激活。

那是行不通的。 如果需要标量(=单值)函数,则需要相应地调整代码。

看看该代码,我可以说它确实创建了一个表。

因此,请确定要实现的功能。

奖金提示:停止使用SELECT ... FROM DUMMY方法。

< p>只需将所需的值分配给变量即可。

四川大学会员
2楼-- · 2020-08-19 12:50

您是如何尝试终止该功能的? 使用XS Classic作为存储库对象(如果是,是否使用了hdbscalarfunction或hdbtablefunction),还是使用XS Advanced?

一周热门 更多>