如何在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; 

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...