首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在BW转换中使用REPLACE_REGEXPR会抛出语法错误

在BW转换中使用REPLACE_REGEXPR会抛出语法错误
EN

Stack Overflow用户
提问于 2019-08-22 04:01:41
回答 2查看 1.8K关注 0票数 0

我正在尝试实现一个例程来替换BW转换中的一些无效字符。但是我一直收到一个语法错误。这是我当前的代码:

代码语言:javascript
复制
METHOD S0001_G01_R40 BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT 
OPTIONS READ-ONLY.
-- target field: 0POSTXT
-- Note the _M class are not considered for DTP execution.
-- AMDP Breakpoints must be set in the _A class instead.

outTab = SELECT REPLACE_REGEXPR('([^[:print:]|^[\x{00C0}-\x{017F}]|[#])' 
IN "SGTXT" WITH '' OCCURRENCE ALL ) AS "/BI0/OIPOSTXT"
FROM :inTab;

errorTab = SELECT '' AS ERROR_TEXT,
          '' AS SQL__PROCEDURE__SOURCE__RECORD FROM DUMMY
          WHERE DUMMY <> 'X';
ENDMETHOD.

我一直收到以下错误:

代码语言:javascript
复制
 SQLSCRIPT message: return type mismatch: Procedure 
 /BIC/QCW72C4IJDC8JAFRICAU_M=>S0001_G01_R40: OUTTAB[ /BI0/OIPOSTXT:NVARCHAR(5000) ]
 != expected result [ POSTXT:NVARCHAR(60) RECORD:NVARCHAR(56)
 SQL__PROCEDURE__SOURCE__RECORD:NVARCHAR(56) ]

有人能告诉我我哪里做错了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-05 08:45:23

您可能希望将正则表达式包含在CAST( ... AS NVARCHAR(60))中,以确保生成的记录结构与预期的返回类型相匹配。

票数 1
EN

Stack Overflow用户

发布于 2020-03-12 16:59:22

对于那些想知道如何纠正这个问题的人,这里有解决方案。所有内容都在错误消息中:

代码语言:javascript
复制
OUTTAB[ /BI0/OIPOSTXT:NVARCHAR(5000) ]
 != expected result [ POSTXT:NVARCHAR(60) RECORD:NVARCHAR(56)
 SQL__PROCEDURE__SOURCE__RECORD:NVARCHAR(56) ]

这意味着结果表OutTab只包含一个字段(/BI0/OIPOSTXT),因此与预期的OutTab不同,它应该包含3个字段POSTXT、RECORD和SQL__PROCEDURE__SOURCE__RECORD。

通常可以在公共部分的顶部看到预期的结构:

代码语言:javascript
复制
  types:
    begin of TN_S_IN_S0001_G01_R1_1,
       POSTXT type C length 60,
       RECORD type C length 56,
       SQL__PROCEDURE__SOURCE__RECORD type C length 56,
    end of TN_S_IN_S0001_G01_R1_1 .

所以正确的语法应该是:

代码语言:javascript
复制
outTab =
  SELECT CAST(REPLACE_REGEXPR('([^[:print:]|^[\x{00C0}-\x{017F}]|[#])' IN "SGTXT" WITH '' OCCURRENCE ALL) AS NVARCHAR(60)) AS "POSTXT"
    ,"RECORD" AS "RECORD"
    ,SQL__PROCEDURE__SOURCE__RECORD AS "SQL__PROCEDURE__SOURCE__RECORD"
    FROM :inTab;

问候,Jean-Guillaume

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57598491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档