日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Oracle使用ANYDATA列對數據串行化方法

瀏覽:32日期:2023-11-13 10:10:45
Oracle版本9提供了一種有趣的新的數據類型,開發(fā)人員借助此類型可以聲明包括任何類型數據的變量。對于單個數據來說,此數據類型即ANYDATA。對于TABLE或者VARRAY數據來說,則為ANYDATASET。ANYTYPE用于描述存儲在ANYDATA或者ANYDATASET變量以及欄中的數據類型。這些數據類型對于處理存儲在數據庫中的XML數據或高級序列(Advanced Queues)具有非常重要的意義。說明文檔中提到了ANYDATA數據類型可以用于對對象進行串行化(serialize),但與之相關的示例較少。 串行化首先將數據值和其他結構(strUCture)組成為另外一些結構,然后將生成的結構的所有構成成分輸出為流。流可以被結構返回讀取,并且將覆蓋前一個會話的信息。通常而言,在應用程序中進行的保存和打開文件的操作即不過是串行化的一種形式。 一個Oracle數據庫或許需要使用串行化功能來存儲一些表格數據的某個版本備份,這樣可以在不使用數據庫提交(commits)、回滾(rollbacks)、回閃(flashback)查詢的情況下對數據進行查看和其他操作。許多應用程序都會用到類似的對數據源的控制功能,諸如可以在應用級對當前和以前的數據版本進行比較,或對合并操作(merge)和撤銷操作(undo)所產生數據改變進行比較。很多此類應用程序都被設計為對每個表格創(chuàng)建一個備份表格。而對于數據庫性能和開發(fā)進度來說,要維護這些眾多的備份表格以及之間的各種關系,成為了生產數據(production data)以外的沉重負擔。 而通過ANYDATA數據類型以及動態(tài)SQL功能,使得通過單一的串行化存儲進程來把許多需要備份的表格串行輸入到一個單獨的備份表格成為可能。ANYDATA的一個優(yōu)勢在于,不同于類似VARCHAR2的簡單的轉換數據類型,使用ANYDATA方法原始的數據類型并不會丟失。數據可以被存儲在ANYDATA欄或者變量中而不會丟失任何細節(jié)(或根據在DATA和VARCHAR2之間進行轉換的當前NLS語義而定)。這些存儲的數據在轉化過程中不會有任何損失。 一個ANYDATA對象可以通過使用任何Convert*方法構造簡單值的方法來實現,或者通過“piecewise”構造方法創(chuàng)建諸如對象和數據庫一類的更為復雜的變量。對于本例而言,我將集中解釋如何使用Convert*方法。 為了創(chuàng)建一個串行化進程,我使用了動態(tài)SQL來產生一個對表格中所有數據的查詢命令,其中包括ROWID。然后我將查詢命令進行分解并描述,從而得到一個關于欄和數據類型的列表。再定義提取(fetch)出欄,將每一欄從各行中提取出來,然后將其插入到串行化表格中。在本例中我使用了DBMS_SQL,因為“自身動態(tài)SQL(native dynamic SQL)”現在還不能支持描述動態(tài)查詢。絕大多數的工作都是對從DBMS_SQL數據類型代碼到合適的數據類型方法以及函數的轉換過程進行處理。要得到這些代碼的列表,可以查看OCI包含文件ocidfn.h,或者是諸如USER_TAB_COLUMNS這樣的對查看(view)的定義。在本例中,我使用了簡單的數據類型(可以在EMP和DEPT表格中找到),這樣可以直接對其進行轉換。 drop table serialized_data;create table serialized_data(tablename varchar2(30) not null,row_id rowid not null,colseq integer not null,item anydata);create or replace procedure serialize(p_tablename varchar2)isl_tablename varchar2(30) := upper(p_tablename);c  pls_integer;-- cursorx  pls_integer;-- dummycol_cnt pls_integer;dtabdbms_sql.desc_tab;l_rowid char(18);l_anydata  anydata;l_vc2  varchar2(32767);l_numbernumber;l_vcvarchar(32767);l_date date;l_raw  raw(32767);l_chchar;l_clob clob;l_blob blob;l_bfile bfile;beginc := dbms_sql.open_cursor;dbms_sql.parse(c,'select rowid,'p_tablename'.* from 'p_tablename,dbms_sql.native);dbms_sql.describe_columns(c,col_cnt,dtab);dbms_sql.define_column(c,1,l_rowid,18);for i in 2 .. col_cnt loopcase dtab(i).col_typewhen 1 thendbms_sql.define_column(c,i,l_vc2,dtab(i).col_max_len);when 2 thendbms_sql.define_column(c,i,l_number);when 9 thendbms_sql.define_column(c,i,l_vc,dtab(i).col_max_len);when 12 thendbms_sql.define_column(c,i,l_date);when 23 thendbms_sql.define_column_raw(c,i,l_raw,dtab(i).col_max_len);when 96 thendbms_sql.define_column_char(c,i,l_ch,dtab(i).col_max_len);when 112 thendbms_sql.define_column(c,i,l_clob);when 113 thendbms_sql.define_column(c,i,l_blob);when 114 thendbms_sql.define_column(c,i,l_bfile);end case;end loop;x := dbms_sql.execute(c);while dbms_sql.fetch_rows(c) != 0 loopdbms_sql.column_value(c,1,l_rowid);for i in 2 .. col_cnt loopcase dtab(i).col_typewhen 1 thendbms_sql.column_value(c,i,l_vc2);l_anydata := ANYDATA.ConvertVarchar2(l_vc2);when 2 thendbms_sql.column_value(c,i,l_number);l_anydata := ANYDATA.ConvertNumber(l_number);when 9 thendbms_sql.column_value(c,i,l_vc);l_anydata := ANYDATA.ConvertVarchar(l_vc);when 12 thendbms_sql.column_value(c,i,l_date);l_anydata := ANYDATA.ConvertDate(l_date);when 23 thendbms_sql.column_value(c,i,l_raw);l_anydata := ANYDATA.ConvertRaw(l_raw);when 96 thendbms_sql.column_value(c,i,l_ch);l_anydata := ANYDATA.ConvertChar(l_ch);when 112 thendbms_sql.column_value(c,i,l_clob);l_anydata := ANYDATA.ConvertClob(l_clob);when 113 thendbms_sql.column_value(c,i,l_blob);l_anydata := ANYDATA.ConvertBlob(l_blob);when 114 thendbms_sql.column_value(c,i,l_bfile);l_anydata := ANYDATA.ConvertBFile(l_bfile);end case;insert into serialized_data (tablename,row_id,colseq,item)values (l_tablename,l_rowid,i,l_anydata);end loop;end loop;dbms_sql.close_cursor(c);end;/show errors; 假如我希望對“EMP”和“DEPT”表格串行化,我可以按照以下代碼通過SQL*Plus來完成: exec serialize('emp');exec serialize('dept');select t.item.gettypename() from serialized_data t; 使用ANYDATA中的一個問題是,假如是對象,則只有很少的信息可以通過直接SQL恢復過來。表格數據必須使用PL/SQL過程進行訪問。
標簽: Oracle 數據庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费一区二区三区在线视频| 999久久久国产精品| 亚洲精品伦理| 国产精品普通话对白| 国产精品久久久久久久久久妞妞| 日韩一区电影| 国产一区二区三区亚洲综合| 天堂成人国产精品一区| 欧美va天堂在线| 在线亚洲自拍| 国产精品久久乐| 久久精品国产99久久| 日韩av在线免费观看不卡| 亚洲精品系列| 欧美亚洲专区| 国产极品嫩模在线观看91精品| 久久中文字幕导航| 日韩福利一区| 久草免费在线视频| 噜噜噜久久亚洲精品国产品小说| 亚洲精品欧美| 欧美激情久久久久久久久久久| 蜜桃伊人久久| 日韩三级视频| 麻豆精品久久| 国产精品4hu.www| 久久精品国内一区二区三区| 国产精品探花在线观看| 国产精品一区二区精品| 国产区精品区| 久久av资源| 日本午夜大片a在线观看| 午夜精品影院| 日韩.com| 日韩久久精品| 日韩国产欧美视频| 国产一区二区三区探花| 国产精品手机在线播放| 久久国产高清| 国产一区二区三区精品在线观看| 美女尤物久久精品| 久久激情五月婷婷| 久久国内精品| 国产综合婷婷| 午夜久久美女| 欧美日韩国产精品一区二区亚洲| 亚洲h色精品| 99久久婷婷这里只有精品| 高清久久精品| 秋霞国产精品| 国产手机视频一区二区 | 老牛国内精品亚洲成av人片| 久久国产精品免费一区二区三区 | 亚洲欧美日韩专区| 蜜臀av性久久久久蜜臀aⅴ流畅| 美女国产精品| 久久九九精品| 国产麻豆精品| 欧美一区精品| 色综合视频一区二区三区日韩 | 日韩欧美二区| 亚洲成人va| 丝袜a∨在线一区二区三区不卡| 日韩av三区| 日本亚洲视频在线| 国产情侣一区在线| 免费在线亚洲| 岛国av免费在线观看| 国产传媒在线| 精品成人免费一区二区在线播放| 成人av三级| 激情综合自拍| 一区在线免费观看| 欧美黑人做爰爽爽爽| 人人精品久久| 视频一区视频二区中文| 黄色av一区| 欧美大黑bbbbbbbbb在线| 亚洲一区资源| 国产激情一区| 国产精品入口久久| 另类小说一区二区三区| 国产精品白浆| 国产精品亚洲欧美| 国产精品一页| 精品国产中文字幕第一页| 国产极品模特精品一二| 久久三级毛片| 日韩国产一区二区三区| 国产精品一区二区精品| 青青在线精品| 午夜精品福利影院| 婷婷亚洲成人| 综合精品一区| 少妇精品导航| 亚洲成人不卡| 欧美gv在线| 国产一区欧美| 色婷婷狠狠五月综合天色拍| 午夜久久福利| 91免费精品| 日本综合视频| 成人精品亚洲| 国产精品白丝av嫩草影院| 99免费精品| 久久精品国产久精国产| 亚洲婷婷丁香| 婷婷成人综合| 国产精品蜜芽在线观看| 精品日韩毛片| 青青青免费在线视频| 青青草国产成人99久久| 在线日韩电影| 日产午夜精品一线二线三线| 青青青国产精品| 手机精品视频在线观看| 色婷婷精品视频| 精品久久美女| 国产三级精品三级在线观看国产| 精品日韩毛片| 日韩毛片在线| 欧美三级网址| 久久久久久久欧美精品| а√在线中文在线新版| 欧美激情日韩| 国产高清亚洲| 国产伦一区二区三区| 日本在线一区二区三区| 免费一级欧美在线观看视频| 色爱综合网欧美| 亚洲国产综合在线看不卡| 在线日韩一区| 亚洲在线免费| 国产日韩欧美一区二区三区| 欧美激情福利| 热三久草你在线| 日韩视频不卡| 国产丝袜一区| 日韩三区免费| 日韩精品一二区| 国产一区二区三区四区二区| 欧洲亚洲一区二区三区| 亚洲一区国产| 国产精品v日韩精品v欧美精品网站 | 成人精品亚洲| 综合亚洲自拍| www在线观看黄色| 中文字幕免费精品| 超碰在线99| 日韩欧美在线精品| 欧美aa在线观看| 国产精品宾馆| 蜜臀av性久久久久蜜臀aⅴ四虎 | 免费人成精品欧美精品| 国产精品超碰| 亚洲精品看片| 夜夜嗨av一区二区三区网站四季av| 国产日韩在线观看视频| 免费黄色成人| 欧美精品不卡| 亚洲精选91| 香蕉精品久久| 欧美亚洲福利| 国产精品3区| 综合亚洲视频| 捆绑调教日本一区二区三区| 精品美女久久| 国产欧美大片| 97成人超碰| 蜜桃视频一区二区三区| 国产一区二区高清| 午夜日本精品| 亚洲免费中文| 国产手机视频一区二区| 在线综合视频| 鲁大师影院一区二区三区| 亚洲免费影视| 亚洲精品影视| 91精品国产自产在线丝袜啪| 无码日韩精品一区二区免费| 免费精品视频在线| 蜜臀久久99精品久久久久久9| 亚洲国产不卡| av不卡在线| 69堂精品视频在线播放| 国产精品99久久免费| 日本不卡视频在线观看| 911亚洲精品| 国产中文欧美日韩在线| 久久精品999| 国产精品夜夜夜| 欧美日韩18| 97se亚洲| 成人在线视频区| 欧美二三四区| 色偷偷色偷偷色偷偷在线视频| 国产精品亚洲欧美一级在线| 国产福利资源一区| 麻豆一区二区三区| 欧美www视频在线观看|