使用字符串调用存储过程时出错-HANA 2 SPS02

2020-09-16 09:39发布

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

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


嗨。

我写了一个SP,该SP接受字符串并执行一条update语句。 2个字符串,一个用于SET'',一个用于WHERE。

UPDATE" sch"。" hana.data::Tables.details" SET :Upd_Str WHERE" LocationNo" IN(: LOC_VAL );

当我从XSJS调用此SP时

选项1。 result = spUpdate(updStrForSP,locStrForSP);

选项2。 result = spGetLocations('" Country" = \'CA \'," Brands" = \'brd1,brd2 \'," POBox" = \'500032 \'','\' 748631 \',\'746716 \'');

选项1出现语法错误,但是选项2正常运行。 但是选项1中的变量具有相同的值(调试时比较这些值)

我已经尝试了所有可能的组合来解决此问题。 但是语法错误仍然存​​在。

我感觉到的问题是由于特殊字符(\)。 没有它,我将无法运行SP。 这样做的原因是,我们必须更新1个或更多列,而这些列将是即时知道的。

感谢您的回复。

致谢

吉里


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

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


嗨。

我写了一个SP,该SP接受字符串并执行一条update语句。 2个字符串,一个用于SET'',一个用于WHERE。

UPDATE" sch"。" hana.data::Tables.details" SET :Upd_Str WHERE" LocationNo" IN(: LOC_VAL );

当我从XSJS调用此SP时

选项1。 result = spUpdate(updStrForSP,locStrForSP);

选项2。 result = spGetLocations('" Country" = \'CA \'," Brands" = \'brd1,brd2 \'," POBox" = \'500032 \'','\' 748631 \',\'746716 \'');

选项1出现语法错误,但是选项2正常运行。 但是选项1中的变量具有相同的值(调试时比较这些值)

我已经尝试了所有可能的组合来解决此问题。 但是语法错误仍然存​​在。

我感觉到的问题是由于特殊字符(\)。 没有它,我将无法运行SP。 这样做的原因是,我们必须更新1个或更多列,而这些列将是即时知道的。

感谢您的回复。

致谢

吉里


付费偷看设置
发送
6条回答
路亽曱_Ryan
1楼 · 2020-09-16 10:09.采纳回答

我创建了一个变量并创建了要传递给EXECUTE IMMEDIATE的字符串

upString:='更新"表" SET';

wholeString:=:upString || :inString;

立即执行(:wholeString);

这是我所做的唯一更改。 一切正常。

感谢您的回复

致谢

吉里

吹牛啤
2楼-- · 2020-09-16 10:24

谢谢塞尔吉奥。 我们尝试了所有选项

CJones
3楼-- · 2020-09-16 10:09

Giri ...您看到的与语法相关的问题是bc,您转义了太多次...您应该能够使用execute立即语句-我有 试图将..请将整个Update语句放入一个变量...(不要转义单引号...然后立即执行该语句

SAP小菜
4楼-- · 2020-09-16 10:13

似乎您正在使用静态update语句;并且 如果希望基于Update字符串动态更新列,则必须使用Dynamic sql进行这种更新。

立即执行将是执行动态sql的正确选择。

SC_Yao
5楼-- · 2020-09-16 10:13

嘿阿尼鲁达(

感谢您的回复。

我们也尝试过。 我们也在那里收到语法错误。 因此采用了这种方法

致谢

Giri

nice_wp
6楼-- · 2020-09-16 10:05

错误消息是什么? 很难在您的应用程序知识有限的情况下给出答案。

一周热门 更多>