Tôi có kinh nghiệm sử dụng MSSQL 2008 và gần đây tôi đã chuyển từ MSSQL sang Oracle 10g. Những người thiết kế bảng (Oracle), có một cột tôi cần trích xuất dữ liệu từ, sử dụng cột loại BLOB
cho XML mà họ cần lưu trữ.convert oracle blob thành xml type
Trong MSSQL bạn đã lưu trữ chuỗi XML của mình một cách đơn giản theo loại XML
hoặc sử dụng VARCHAR(MAX)
. Giả sử một bảng myTable
với một cột gọi là myColumn
mà là một VARCHAR(MAX)
chứa <ROOT><a>111</a></ROOT>
Nếu bạn muốn chuyển đổi loại VARCHAR(MAX)
đến một loại XML
bạn chỉ cần viết một cái gì đó như:
SELECT CONVERT(XML, myColumn) FROM myTable
nếu bạn muốn, sau đó bạn có thể sử dụng XQuery để lấy dữ liệu từ cột được chuyển đổi, như vậy:
SELECT CONVERT(XML, myColumn).query('/ROOT/a')
Làm thế nào bạn sẽ thực hiện được điều tương tự trong Oracle 10g nếu myColumn là một BLOB
, mà không cần phải viết một thủ tục lưu trữ nhưng vẫn m aking nó tái sử dụng? Văn bản trong BLOB là UFT-8
.
Tôi thực sự đánh giá cao sự trợ giúp của bạn, vì tôi cần điều này một cách nhanh chóng.
Xin chào Davmos cảm ơn bạn rất nhiều vì phản hồi của bạn, tôi đang thử giải pháp mà bạn đưa ra. Sẽ cho bạn biết cách hoạt động của nó. – user1279734
Hi Davmos, tôi tiếp tục nhận được một clob trở lại thay vì và XMLTYPE, làm cách nào để có được một loại xml? – user1279734
Hi @ user1279734, hàm ở trên chỉ có thể trả về 'XMLTYPE'. Bạn gọi nó như thế nào? – davmos