Oracle XMLTYPE: такой параметр, как ‹123.xml/›, не работает

Я использую Oracle 11g, в котором я передаю имя файла функции, скажем

FUNCTION test(file_name IN XMLTYPE)

Он принимает имя файла, например <file1.xml/>, но когда я передаю имя файла как <123.xml/>, он выдает ошибку исключения типа Oracle. Но если я снова передам имя файла, начинающееся с символа, как <T123.xml/>, тогда оно работает нормально.

Подскажите, пожалуйста, что нужно сделать, чтобы имя файла обрабатывалось как <123.xml/>


person user3013178    schedule 24.12.2013    source источник
comment
Как вы вызываете функцию и какую именно ошибку вы получаете? Пожалуйста, добавьте код вызова и весь стек ошибок в вопрос. Почему вы все равно передаете имя файла как XMLTYPE, а не как строку?   -  person Alex Poole    schedule 24.12.2013


Ответы (1)


<123.xml/> не является допустимым XML: имена тегов не могут начинаться с цифры (или . или -). В статье Википедии о XML есть хорошее резюме о корректности. Однако два других примера, которые вы разместили, являются допустимым XML, имена тегов имеют правильный формат.

Однако ваш вариант использования выглядит очень странно. Если вы хотите передать этой функции простое имя файла, почему бы вам не передать обычную строку? Если вы хотите передать имя файла, закодированное в XML-контейнере, что-то вроде этого будет иметь больше смысла:

<file name="foo.bar"/>
person Mat    schedule 24.12.2013