1. 程式人生 > >oracle xmltype 建立 、插入、更新、查詢

oracle xmltype 建立 、插入、更新、查詢

[文章摘要]介紹了oracle9i的xmltype資料型別的基本使用
包括:建立含有xmltype資料型別的表
插入(insert)資料
查詢(select)資料
更新(update)資料
新增超過4k位元組的xml文件到xmltype型欄位
適合初學者。


關鍵詞: oracle9i xmltype


oracle從9i開始支援一種新的資料型別---- xmltype,用於儲存和管理xml資料,並提供了很多的functions,用來直接讀取xml文件和管理節點。下面將介紹xmltype的一些基本使用。

1.建立含有xmltype資料型別的表
create table abc (id number,xmldoc sys.xmltype);
宣告xmltype型欄位用:sys.xmltype

2.向帶有xmltype型別的表插入帶有資料


insert into abc (id,xmldoc) value (abc.nextval , sys.xmlType.createXML(''<name><a id="1" value="some values">abc</a></name>'') );
插入用 sys.xmlType.createXML(''some xml doc'')

3.直接查詢xmltype欄位裡面的內容
得到id=1的value變臉的值
select i.xmldoc.extract(''//name/a[@id=1]/@value'').getStringVal() as ennames, id from abc i


得到a節點的值
select id, i.xmldoc.extract(''//name/a/text()'').getStringVal() as truename from abc i

得到節點id屬性的值

Select hd.Data_t.extract(''/name/a/@id'').getStringVal()    As Name FROM sehr_house_data hd

4.更新xmltype裡面的資料
update abc set xmldoc=updateXML(xmldoc,''//name/a[@id=1]/@value'',''some new value'') where ......
(注意:如果裡面沒有<a id="1">這個節點,將不能update)

5.新增超過4k位元組的xml文件到xmltype型欄位


可以通過使用臨時表的辦法實現:
先建立一個臨時的表,其中的一個欄位是clob型別;
再將要寫入xmltype欄位的xml doc寫入這個臨時的clob型的欄位中;
最後insert into abc (id,xmldoc) values (abc_q.nextval , sys.xmlType.createXML((select content from 臨時表 where id=......)));


Oracle 9i提供的XML內建特性:

Oracle 9i支援XMLType型別,它是一種Oracle 9i系統定義的物件型別。XMLType有內建的函式,有力的提供了推XML的建立,索檢,索引等功能。

使用者可以使用SQL函式動態的產生XML文件。這些函式有:SYS_XMLGENSYS_XMLAGGPL/SQLDBMS_XMLGEN

XML特性

描述

XMLType

1XMLTypeoracle系統定義的資料型別,系統預定義了內部函式去訪問XML資料。可以執行下面的任務:

2、建立XMLType列,在XMLType列上面使用內建的函式。

建立PL/SQL函式和儲存過程,可以使用XMLType作為引數傳入,或者作為返回引數傳出。

3、在XMLType列上面儲存、索引、處理XML資料。

DBMS_XMLGEN

DBMS_XMLGEN是一個PL/SQL包,提轉換一個sql查詢的結果到標準的xml格式,返回的是一個XMLTye型別或者是CLOBDBMS_GEN是用c語言實現,放置在資料庫的核心中。DBMS_XMLGEN包和DBMS_XMLQuery包的功能相相似。

SYS_XMLGEN

XMLGEN是一個SQL函式,它用來在sql查詢中產生XMLDBMS_XMLGEN和其他包操作在查詢水平,

SYS_XMLGEN把一個值,物件型別,XMLType例項轉換成一個XML文件。SYS_XMLGEN返回的型別是XMLType

SYS_XMLAGG

SYS_XMLAGG 是一個聚合函式,它聚合在XMLType型別上面。

SYS_XMLAGG聚合所有的輸入的XML文件合片斷並且通過連線XML片斷合增加上一層的標籤產生單個XML文件

UriTypes

UriType 型別家族能夠在資料庫中儲存和查詢Ur-refsSYS.UriType是一抽象的資料型別,它提供功能去訪問URL指向的資料。SYS.HttpUriTypeSYS.DBUriTypeUriType的子型別。SYS.HttpUriType儲存的是HTTP URLsDBUriType儲存的是intra-database 參考。你可以定義自己的SYS.UriType的子型別。

相關推薦

oracle xmltype 建立 插入更新查詢

[文章摘要]介紹了oracle9i的xmltype資料型別的基本使用包括:建立含有xmltype資料型別的表插入(insert)資料查詢(select)資料更新(update)資料新增超過4k位元組的xml文件到xmltype型欄位適合初學者。 關鍵詞: oracle9i x

jdbc插入更新查詢資料

jdbc插入資料 /**** * 新增單任務執行記錄 */ @Override public void insertSingleJobLog(ScheduleJobBatchLogDTO sin

oracle資料庫建立及刪除表空間使用者和增刪改查

資料庫 檢視sql資料庫中的所有表空間 select * from dba_data_files; 刪除表空間 SQL> drop tablespace db_data including contents and datafiles;

Redis系列十:緩存雪崩緩存穿透緩存預熱緩存更新緩存降級

布隆 隊列 class 系統 新頁面 研究 後臺 默認值 二級 一、緩存雪崩 緩存雪崩我們可以簡單的理解為:由於原有緩存失效,新緩存未到期間(例如:我們設置緩存時采用了相同的過期時間,在同一時刻出現大面積的緩存過期),所有原本應該訪問緩存的請求都去查詢數據庫了,而對數據庫C

python操作數據庫類。實現建表插入數據查詢數據功能

port style err mys nbsp str con clas exce 1 import mysql.connector 2 class database: 3 def __init__(self,ip,port,user,psw,dbname)

選擇排序法氣泡排序法插入排序法系統提供的底層sort方法排序之毫秒級比較

我的程式碼: package PlaneGame;/** * 選擇排序法、氣泡排序法、插入排序法、系統提供的底層sort方法排序之毫秒級比較 * @author Administrator */import java.util.Arrays;public class Newtest { public sta

SQL Server入門(三) SQL Server 官方Microsoft GitHub儲存庫示例SQL Server論壇SQL Server 更新遠端連線

一、SQL Server 的官方Microsoft GitHub儲存庫 (給出資料庫的各種例項型別,包括了SQL Server, Azure SQL Database, and Azure SQL Data Warehouse的應用範例)Official Microsoft GitHub Rep

演算法導論 第十二章:二叉查詢樹 筆記(二叉查詢查詢二叉查詢插入和刪除隨機構造的二叉查詢樹)

二叉查詢樹是一種樹資料結構,它與普通的二叉樹最大的不同就是二叉查詢樹滿足一個性質:對於樹中的任意一個節點,均有其左子樹中的所有節點的關鍵字值都不大於該節點的關鍵字值,其右子樹中的任意一個節點的關鍵字值都不小於該節點的關鍵字值。 在二叉查詢樹上可以進行搜尋、取最小值、取最大值、取指定節點的前驅

Java常用的八種排序演算法與程式碼實現(一):氣泡排序法插入排序法選擇排序法

這三種排序演算法適合小規模資料排序 ---   共同點:基於比較,時間複雜度均為O(n2),空間複雜度均為O(1)(原地排序演算法)   不同點:插入排序和氣泡排序是穩定的排序演算法,選擇排序不是 ---   穩定排序演算法:可以保持數值相等的兩個物件,在排序之

git命令-遠端倉庫拉取本地倉庫更新工作空間提交等等

         這個可以雖然不是自己寫的,但是也不是轉載的   Workspace:工作區   Index / Stage:暫存區   Repository:倉庫區(或本地倉庫)   Remo

MarkDown語法進階(三)(文字居中圖片處理插入視訊音樂標準字型)

Markdown編輯器本身是內容寫作工具,本身並不支援文字排版,理論上它只是指出哪些內容是表格、哪些內容是標題、哪些是正文圖片程式碼超鏈。 但是由於markdown需要輸出,自帶html/css整合,

c語言:順序表的實現(一) 建立插入,刪除,查詢,輸出等基本操作實現

#include<iostream> #include<stdio.h> #define LIST_INIT_SIZE 100 #define LIST_INCREMENT 10 using namespace std; struct Sqlist{

Oracle + Mybatis實現批量插入更新和刪除示例程式碼

前言 Mybatis是web工程開發中非常常用的資料持久化的框架,通過該框架,我們非常容易的進行資料庫的增刪改查。資料庫連線進行事務提交的時候,需要耗費的資源比較多,如果需要插入更新的資料比較多,而且每次事務只提交一條資料,會造成非常大的資料庫資源浪費,導致資料庫效能、系統性能大幅度下降。

mybatis Oracle 批量插入批量更新批量查詢

在使用Mybatis操作oracle資料庫時,會涉及到批量操作,踩過好多的坑,留個記錄吧。 1、批量插入 <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="false"> IN

Oracle資料庫學習3之修改插入更新語句

修改語句:alter語句 1.增加一列:alter table 表名 add (欄位名 欄位型別)2.刪除一列:alter table 表名 drop(列名)3.修改某一列的名字:alter table 表名 rename column 舊名 to 新名4.修改某一列的屬性

Mybatis(Oracle)批量插入批量更新批量刪除

mybatis對映中可以通過<foreach></foreach>標籤來實現Oracle的批量插入、更新和刪除     <foreach>標籤中主要有以下屬性:     collection、item、index、open、separat

如何恢復oracle誤刪除更新插入的資料

通過這個語句 可以查詢出某個時間段表狀態 select *     from ts_dpt as of timestamp to_date('2012-5-9 10:30:00', 'yyyy-mm-dd hh24:mi:ss') 找出你需要的資料,之後就。這個應該是or

mysql-插入更新刪除數據

sta row code ica update tab -- affect nbsp 1、插入: ① mysql中有三種插入:insert into、replace into、insert ignore insert into:表示插

EntityFrameWork使用TransactionScope分布式事務,存儲區更新插入或刪除語句影響到了意外的行數(0)。實體在加載後可能被修改或刪除。刷新 ObjectStateManager 項 錯誤

bject require 鍵值 有一個 char 加載 ransac state system 最近在開發一個小型的物業管理系統,系統其中有一個功能需要每個月按抄的水表、電表等生成相應的費用,數據庫主要的基礎數據表有大樓水、電表、樓層水、電表、房間水電表;其中大樓和樓層的

使用T-SQL語句插入更新刪除數據表

數據庫 sql server sql語言 楊書凡 t-sql語句 在對數據進行管理時,使用SSMS進行數據維護有可視化、方便的優點,但是在批量維護或重復維護時,使用SSMS就不方便了,還容易出錯,這就需要編寫SQL語句對數據庫進行維護SQL和T-SQL SQL是Structu