0

私はxmlタイプのOracleのテーブルを作成しています(これは初めてです)。テーブルにいくつかのレコードを挿入しました。select ステートメントを使用してテーブルからレコードを取得しようとすると、次のエラーが発生します。

[エラー] スクリプト行: 404-405 ---------------------- ORA-00904: "E"."ENAME": 無効な識別子スクリプト行 404、ステートメント1 行目、25 列目

ステートメントを作成します。

CREATE TABLE EMPLOYEE_XML of xmltype
/

挿入ステートメントの 1 つ

insert into EMPLOYEE_XML values (
sys.XMLType.createXML(
'<ROWSET>
<DEPT>
<DEPTNO>10</DEPTNO>
<DNAME>ACCOUNTING</DNAME>
<LOC> NEW YORK</LOC>
<EMP_LIST>
<EMP_ROW>
<EMPNO>7782</EMPNO>
<ENAME>CLARK</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>09-JUN-1981 00:00:00</HIREDATE>
<SAL>2450</SAL>
</EMP_ROW>
<EMP_ROW>
<EMPNO>7739</EMPNO>
<ENAME>KING</ENAME>
<JOB>PRESIDENT</JOB>
<HIREDATE>17-NOV-1981 00:00:00</HIREDATE>
<SAL>5000</SAL>
</EMP_ROW>
<EMP_ROW>
<EMPNO>7934</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7782</MGR>
<HIREDATE>23-JAN-1982 00:00:00</HIREDATE>
<SAL>1300</SAL>
</EMP_ROW>
</EMP_LIST>
</DEPT>
</ROWSET>'))
/

次のステートメントを実行すると、エラーが発生します SELECT XMLELEMENT("Name",e.ENAME) FROM EMPLOYEE_XML e /

注: XMLELEMENT を使用してテーブルからデータを取得する必要があります

4

1 に答える 1

0

テーブルに XMLSCHEMA がまだ定義されていないと仮定して、XMLTABLE を使用しました。

select XMLELEMENT("Name", x2.emp_name) emp_name
from   EMPLOYEE_XML e,
       xmltable ('/ROWSET/DEPT/EMP_LIST/EMP_ROW'
                 PASSING e.OBJECT_VALUE
                 columns emp_name varchar2(30) path 'ENAME') x2;

EMP_NAME              
----------------------
<Name>CLARK</Name>    
<Name>KING</Name>     
<Name>MILLER</Name> 
于 2015-11-04T17:56:01.853 に答える