错误ORA-01722:Select with Xmlagg/Xmlelement中的数字使用无效
我在以下查询中遇到上述错误-仅在查询运行约30分钟后出现。错误ORA-01722:Select with Xmlagg/Xmlelement中的数字使用无效,xml,oracle,select,string-concatenation,ora-01722,Xml,Oracle,Select,String Concatenation,Ora 01722,我在以下查询中遇到上述错误-仅在查询运行约30分钟后出现。 因为我只在这一次之后才得到错误,所以我想知道它是否是由接近查询末尾的某个原因引起的,例如**.EXTRACT**? 我尝试对Xmlelement中的所有项目使用来显示CHAR和NVL,但也没有任何帮助 但是,当我对第2列到第6列分别使用相同的结构(Rtrim/Xmlagg/xmlement)时,它工作得很好(这对我没有帮助)。 Listagg也可以工作,但不允许有足够的字符 有人能告诉我我做错了什么吗 错误消息: SELECT
因为我只在这一次之后才得到错误,所以我想知道它是否是由接近查询末尾的某个原因引起的,例如**
.EXTRACT
**?
我尝试对Xmlelement中的所有项目使用来显示CHAR
和NVL
,但也没有任何帮助
但是,当我对第2列到第6列分别使用相同的结构(Rtrim/Xmlagg/xmlement)时,它工作得很好(这对我没有帮助)。Listagg也可以工作,但不允许有足够的字符 有人能告诉我我做错了什么吗 错误消息:
SELECT
a.column1 AS ID
, RTRIM
(
XMLAGG
(
XMLELEMENT
(
e, 'Column2: ' || b.column2 ||
'Column3: ' || SUBSTR(c.column3, 1, 50) || '...' ||
'Column4: ' || b.column4 ||
'Column5: ' || TO_CHAR(b.column5, 'FM9,990.00') ||
'Column6: ' || TO_CHAR(b.column6, 'FM9,990.00') ||
'---'
) ORDER BY b.column2
).EXTRACT('//text()'), ','
) AS AD
, TO_CHAR(b.column7, 'FM9,990.00') AS GN
, TO_CHAR(b.column8, 'FM9,990.00') AS GU
, TO_CHAR((b.column7 + b.column8), 'FM9,990.00') AS GB
FROM
/* ... */
ORA-01722。。。数字的无效使用
我的查询:
SELECT
a.column1 AS ID
, RTRIM
(
XMLAGG
(
XMLELEMENT
(
e, 'Column2: ' || b.column2 ||
'Column3: ' || SUBSTR(c.column3, 1, 50) || '...' ||
'Column4: ' || b.column4 ||
'Column5: ' || TO_CHAR(b.column5, 'FM9,990.00') ||
'Column6: ' || TO_CHAR(b.column6, 'FM9,990.00') ||
'---'
) ORDER BY b.column2
).EXTRACT('//text()'), ','
) AS AD
, TO_CHAR(b.column7, 'FM9,990.00') AS GN
, TO_CHAR(b.column8, 'FM9,990.00') AS GU
, TO_CHAR((b.column7 + b.column8), 'FM9,990.00') AS GB
FROM
/* ... */
这里的问题可能是我使用了“”、“
作为提取分隔符,但在列值中的某个位置也可能有逗号吗
更新:当我取出第5列和第6列的行时,它就工作了。第4列也是数字格式,所以不能由格式引起 非常感谢您的帮助,
Mike所有列的数据类型是什么?特别是(如果只运行XMLAgg部分适用于所有行,而不仅仅是网格输出中的前50行)第6列和第7列?如果只删除
extract()
,会发生什么情况?如果您要传递给\u char()的所有对象实际上都是数字,那么显示问题的示例数据可能会有所帮助(但也可能会告诉您出了什么问题……。@AlexPoole:谢谢。第1列至第3列为VARCHAR2,第4列至第8列为数字格式。我想知道我的问题是否是列值中可能有逗号,以及我使用“,”进行提取。但是,如果我写Rtrim/Xmlagg/xmlement,它也可以正常运行。。。对每一列分别进行。@AlexPoole:Update:当我取出第5列和第6列的行时,它就工作了。第4列也是数字格式,所以不能由格式引起。