SQL Plus XML解析器不允许使用

时间:2013-03-11 14:51:22

标签: sql xml xml-parsing sqlplus oracle-sqldeveloper

我有一个包含XMLType的表。我的标签包含Å和Ö,例如“ÅR” 我使用Oracle SQL Developer解析了它,但是一旦我尝试在Sql Plus中使用相同的查询,它就不会接受åäö。不知道怎么解决这个问题。

所以在终端这个(raw或.sql文件中)

select count(d.year)
from fic data, XMLTable('/Arkiv/Record'             
PASSING data.xmldata                
COLUMNS             
YEAR    varchar2(20)    PATH    'ÅR'
) d where data.id =7;

会出现以下错误:

ORA-19114: XPST0003 - error during parsing the XQuery expression:
LPX-00800: XQuery invalid token ''
1   ÅR
-  ^

1 个答案:

答案 0 :(得分:0)

很可能这是sqlplus(或你正在调用它的shell)的问题,以错误的编码提供数据。

UTL_I18N.raw_to_char ( HEXTORAW ( '<character_as_octet_sequence>' ), '<charset_encoding>' )替换文字中的非ascii-chars。这会将字符转换为数据库字符集,并且应该通过其间的任何工具,因为您只需要us-ascii符号进行规范。

在你的例子中

  • A circonflex - &gt; UTL_I18N.raw_to_char ( HEXTORAW ( 'C5' ), 'WE8ISO8859P15' )
  • O ulalauted - &gt; UTL_I18N.raw_to_char ( HEXTORAW ( 'D6' ), 'WE8ISO8859P15' )