Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误ORA-01722:Select with Xmlagg/Xmlelement中的数字使用无效_Xml_Oracle_Select_String Concatenation_Ora 01722 - Fatal编程技术网

错误ORA-01722:Select with Xmlagg/Xmlelement中的数字使用无效

错误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

我在以下查询中遇到上述错误-仅在查询运行约30分钟后出现。
因为我只在这一次之后才得到错误,所以我想知道它是否是由接近查询末尾的某个原因引起的,例如**
.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列也是数字格式,所以不能由格式引起。