[Ora] XmlTable error
От: Funny Rabbit Россия  
Дата: 14.09.25 07:15
Оценка:
SELECT xt.* 
FROM (
    SELECT 
         XMLELEMENT("Employee", XMLATTRIBUTES(pl AS "ID", f1 AS "Name"), 
            XMLELEMENT("Salary", f2), 
            XMLELEMENT("Department", f2) ) AS xml_data 
    FROM 
    (
        SELECT LEVEL AS pl, chr(LEVEL + 100) AS f1, LEVEL + 100 AS f2 FROM dual CONNECT BY LEVEL <= 10
    )

) z, XMLTABLE('/Employee'
         PASSING z.xml_data
         COLUMNS 
           Salary VARCHAR2(10)  PATH 'Salary',
           Department VARCHAR2(100) PATH 'Department'
         ) xt;

Вот такая ошибка.

SQL Error [19114] [72000]: ORA-19114: error during parsing the XQuery expression:
ORA-06550: line 1, column 13:
PLS-00201: identifier 'SYS.DBMS_XQUERYINT' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

В чем проблема и как исправить. Благодарен за любые наводки.
То что меня не убивает, делает меня умнее.
Re: [Ora] XmlTable error
От: Sinclair Россия https://github.com/evilguest/
Дата: 15.09.25 16:42
Оценка: 4 (1)
Здравствуйте, Funny Rabbit, Вы писали:
Не спец по ораклу, но раз вы приветствуете прямо любые наводки, то:

Вы используете XMLTABLE и XMLELEMENT, которые внутри обращаются к встроенным пакетам Oracle для обработки XML/XQuery.
Конкретно пакет SYS.DBMS_XQUERYINT — это внутренний пакет Oracle, который обычно не виден пользователям напрямую.
Если вы видите ошибку must be declared, значит:
— либо не установлен/невалиден компонент XDB (Oracle XML DB),
— либо пользователь не имеет к нему доступа (нет прав на использование пакетов в схеме SYS)
Решения
1. Проверить наличие компонента XDB
Выполните:

SELECT comp_name, status, version 
FROM dba_registry
WHERE comp_id = 'XDB';

Если status != VALID → нужно переустановить или починить XML DB.
Это делается через @?/rdbms/admin/catqm.sql (только админом).

2. Проверить доступ к пакетам
Как DBA, выполнить:
GRANT EXECUTE ON SYS.DBMS_XQUERYINT TO PUBLIC;

или конкретному пользователю:
GRANT EXECUTE ON SYS.DBMS_XQUERYINT TO <your_user>;

Обычно этот грант есть по умолчанию. Если он потерялся — это и вызывает ошибку.

3. Убедиться, что вы не в минимальной установке базы
Если компонент XDB отсутствует (нет записи в dba_registry), проще всего:
-- Под SYS
@?/rdbms/admin/catqm.sql xdbpassword SYSAUX TEMP
(где xdbpassword — пароль для пользователя XDB)

Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: [Ora] XmlTable error
От: BlackEric http://black-eric.lj.ru
Дата: 16.09.25 14:54
Оценка: 4 (1)
Здравствуйте, Funny Rabbit, Вы писали:

FR>В чем проблема и как исправить. Благодарен за любые наводки.


1. Какая версия и редакция оракла?
2. Что вернет select * from dba_objects where object_name = 'DBMS_XQUERYINT';
3. Нет ли проблем с правами доступа к пакету?
4. Кажется, пакет использует Java, не помню точно уже. Она установлена?
https://github.com/BlackEric001
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.