2017-05-04 6 views
0

テーブルとコラムのコメントのリストでXMLを生成する必要があります。Oralceでテーブルやコラムコメントを含むXMLを生成するには?

SELECT * FROM USER_TAB_COMMENTS; -- my tables 

| TABLE_NAME | TABLE_TYPE | COMMENT  | 
----------------------------------------- 
| table_a | TABLE  | t.A comment | 
| table_b | TABLE  | t.B comment | 


SELECT * FROM USER_TAB_COMMENTS; -- my comments 

| TABLE_NAME | COLUMN_NAME | COMMENT  | 
------------------------------------------- 
| table_a | col_1  | c.A1 comment | 
| table_a | col_2  | c.A2 comment | 
| table_b | col_1  | c.B1 comment | 
| table_b | col_2  | c.B2 comment | 

XMLテーブルの記述、私は必要な魔女:

SELECT DBMS_METADATA.GET_XML(REPLACE(OBJECT_TYPE, ' ', '_'), OBJECT_NAME) xml 
FROM USER_OBJECTS 
WHERE OBJECT_TYPE IN ('TABLE'); 

との質問です:どのように私は私のコメントのために同等のXMLを得ることができますか?

SELECT DBMS_METADATA.GET_XML('COMMENT', TABLE_NAME) xml 
FROM USER_TAB_COMMENTS; -- doesn't work 

ご協力いただきありがとうございます。

+0

https://asktom.oracle.com/pls/apex/f:

SELECT XMLELEMENT( "TABLE", XMLFOREST( table_name, table_type, comments ) ).getClobVal() As xml FROM user_tab_comments; 

が内にネストされたすべてのXMLと一列を取得します?p = 100:11:0 :::: P11_QUESTION_ID:233014204543 –

+0

デュアルからdbms_metadata.GET_DEPENDENT_XML( 'COMMENT'、 'table_name')を選択します。 S –

+0

Arkadiusz、ありがとう。あなたの答えはMT0の回答と同じくらい簡単ですが、より簡単です。 –

答えて

0

項目ごとに1行を取得する:

SELECT XMLELEMENT(
     "TABLES", 
     XMLAGG(
      XMLELEMENT(
      "TABLE", 
      XMLFOREST(
       table_name, 
       table_type, 
       comments 
      ) 
      ) 
     ) 
     ).getClobVal() As xml 
FROM user_tab_comments; 
+0

ブリリアント!ありがとう:-) –

関連する問題