2009-01-29 66 views
7

我想創建一個採用表名和row_id的存儲過程,並且可以將其序列化爲xml字符串。將Oracle行序列化爲XML

該表可能包含clobs和blob。

我可以在PL/SQL中執行此操作,還是必須使用Java?

這樣做的主要目的是讓所有更新一個表,並刪除了一些表,保持X最新版本,或數據的X天(該表將包括像chg_date(default:sysdate)chg_type(U or D)chg_xml,並可能與一些關於用戶的元數據)。

可能的用途: - 它也可以保留所有數據並用作日誌。 - 將行返回到任何以前的值的能力。 - 以特定格式進行EDI的能力。

我不想使用Oracle的閃回查詢來達到那裏,因爲不能保證數據的可用性。

回答

6

Oracle有一個以xml格式返回查詢的函數。

在此示例中,用表名替換&表,並用rowid替換& rowid。我測試了它,它似乎與clobs和blob一起工作。對於blob,它以十六進制形式返回數據。

SELECT DBMS_XMLGEN.getxmltype ('select * from &table_name where rowid = ''&rowid''') 
    FROM DUAL