微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在RPGLE中的“ XMLTABLE”嵌入式SQL语句中跨多行中断长字符串?

如何解决如何在RPGLE中的“ XMLTABLE”嵌入式SQL语句中跨多行中断长字符串?

我的XML路径超过100个字符(因此在保存源时会被截断)。我的发言是这样的:

Exec sql
Select Whatever
  Into :Stuff
From Table as X,XmlTable(
    XmlNamespaces('http://namespace.url/' as "namespacevalue"),'$X/really/long/path' Passing X.C1 as "X"
    Columns
      Field1 Char(3) Path 'example1',Field2 Char(8) Path 'example2',Field3 Char(32) Path '../example3'
  ) As R; 

我必须跨多行中断 $ X / really / long / path 。根据{{​​3}},

加号(+)可用于指示字符串常量的延续。

但是,这甚至都没有通过预编译(“令牌+无效”)。我怀疑这是由于字符串在语句中的位置所致。

我也尝试过:

  • 将路径放入主机变量中;这是不允许的
  • 使用sql CONCAT或||;不允许
  • 将路径放入sql全局变量而不是主机变量中;不允许

我考虑过:

  • 准备整个语句,但这出于多种原因并不理想
  • 在层次结构中的更高级别截断路径,但这不会返回所需的记录“粒度”

有没有办法在源代码的多行中跨XmlTable函数中的特定文字?感谢您提出的所有想法!

解决方法

类似

Exec SQL
Select Whatever
  Into :Stuff
From Table as X,XmlTable(
    XmlNamespaces('http://namespace.url/' as "namespacevalue"),'$X/really/+
     long/path' Passing X.C1 as "X"
    Columns
      Field1 Char(3) Path 'example1',Field2 Char(8) Path 'example2',Field3 Char(32) Path '../example3'
  ) As R; 

应该工作,是您尝试的吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。