oracle的long型別欄位的應用-- 實戰篇

itpremier發表於2011-04-09

上篇介紹了LONG型別的基本知識,這一篇用實際程式碼介紹如何操作。

--在實際操作中,我們最可能遇到的問題是,將遺留的資料遷到新的環境中。對LONG型別而言,最有可能的操作就是從將資料來源匯入目標VARCHAR2或CLOB欄位中。

以下是儲存過程程式碼,其中被註釋的內容是未最佳化的程式碼。

使用最佳化之後,速度提高了一倍。


select * from user_segments where segment_name like 'TMP_TAB_COLUMNS%' ;

bytes, blocks, extents
655360 80 10 -- uncompress
262144 32 4 insert as ,compress
327680 40 5 insert value , compress
327680 40 5 insert bulk , compress

create or replace procedure p_defv_tab is
cursor cur_tab_col
is
select OWNER, TABLE_NAME, COLUMN_NAME, DATA_DEFAULT
from dba_tab_columns a
where a.OWNER IN ('GLPLATFORM',
'SALESMGMT',
'TRADEMGMT',
'ENGINE',
'HOMELINK',
'PROCESSPLATFORM',
'USERMGR',
'SYSMGR',
'COMMONFRAMEWORK',
'OWNERS');

va_owner dbms_sql.varchar2s ;
va_table dbms_sql.varchar2s ;
va_col dbms_sql.varchar2s ;
va_defv dbms_sql.varchar2s ;

begin

/*
for row_tab_col in cur_tab_col loop
insert into tmp_tab_columns_comp
(OWNER, TABLE_NAME, COLUMN_NAME, DATA_DEFAULT)
values
(row_tab_col.OWNER, row_tab_col.TABLE_NAME, row_tab_col.COLUMN_NAME, row_tab_col.DATA_DEFAULT) ;

end loop;

*/

select OWNER, TABLE_NAME, COLUMN_NAME, DATA_DEFAULT
bulk collect into
va_owner, va_table, va_col, va_defv
from dba_tab_columns a
where a.OWNER IN ('GLPLATFORM',
'SALESMGMT',
'TRADEMGMT',
'ENGINE',
'HOMELINK',
'PROCESSPLATFORM',
'USERMGR',
'SYSMGR',
'COMMONFRAMEWORK',
'OWNERS');


forall i in va_owner.first..va_owner.last
insert into tmp_tab_columns_comp
(OWNER, TABLE_NAME, COLUMN_NAME, DATA_DEFAULT)
values
(va_owner(i), va_table(i), va_col(i), va_defv(i) ) ;

end;
/*
INSERT INTO TMP_TAB_COLUMNS
select OWNER, TABLE_NAME, COLUMN_NAME, CAST(DATA_DEFAULT AS VARCHAR2(100)) DV
from dba_tab_columns a where a.OWNER IN ('GLPLATFORM','SALESMGMT','TRADEMGMT','ENGINE','HOMELINK', 'PROCESSPLATFORM','USERMGR','SYSMGR','COMMONFRAMEWORK','OWNERS') ;


CREATE TABLE TMP_TAB_COLUMNS (
OWNER VARCHAR2(30),
TABLE_NAME VARCHAR2(30),
COLUMN_NAME VARCHAR2(30),
DATA_DEFAULT VARCHAR2(100));


*/

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/350519/viewspace-1048446/,如需轉載,請註明出處,否則將追究法律責任。

相關文章