1、long 資料型別中儲存的是可變長字串,最大長度限制是2gb。
2、對於超出一定長度的文字,基本只能用long型別來儲存,資料字典中很多物件的定義就是用long來儲存的。
3、long型別主要用於不需要作字串搜尋的長串資料,如果要進行字元搜尋就要用varchar2型別。
4、很多任務具,包括sql*plus,處理long 資料型別都是很困難的。
5、long 資料型別的使用中,要受限於磁碟的大小。
能夠操作 long 的 sql 語句:
1、select語句
2、update語句中的set語句
3、insert語句中的values語句
限制:1、乙個表中只能包含乙個 long 型別的列。
2、不能索引long型別列。
3、不能將含有long型別列的表作聚簇。
4、不能在sql*plus中將long型別列的數值插入到另乙個**中,如insert into …select。
5、不能在sql*plus中通過查詢其他表的方式來建立long型別列,如create table as select。
6、不能對long型別列加約束條件(null、not null、default除外),如:關鍵字列(primary key)不能是 long 資料型別。
7、long型別列不能用在select的以下子句中:where、group by、order by,以及帶有distinct的select語句中。
8、long型別列不能用於分布查詢。
9、pl/sql過程塊的變數不能定義為long型別。
10、long型別列不能被sql函式所改變,如:substr、instr。
因為long型別的數值不能用insert into … select的方法插入,故我們要分兩步走,先插入其它字段,最後再插入long型別字段,這可以通過過程來實現.下面是乙個我做實驗實現的例子.
sql>; create table testlong (id number,name varchar2(12),history long);
表已建立。
sql>; create table testlong1 (id number,name varchar2(12),history long);
表已建立。
sql>; insert into testlong values(1,』dwh』,'work in foshan』);
已建立 1 行。
sql>; insert into testlong values(2,』sfg』,'work in guangzhou』);
已建立 1 行。
sql>; select * from testlong;
id name
history
1 dwh
work in foshan
2 sfg
work in guangzhou
sql>; insert into testlong1 select * from testlong;
insert into testlong1 select * from testlong
*error 位於第 1 行:
ora-00997: 非法使用 long 資料型別
sql>; declare
2 cursor bcur
3 is select id,history from testlong;
4 brec bcur%rowtype;
5 begin
6 insert into testlong1(id,name) select id,name from testlong;–其它型別
先插入7 open bcur;
8 loop
9 fetch bcur into brec;
10 exit when bcur%notfound;
11 update testlong1 set history= where id=
12 end loop;
13 close bcur;
14 end;
15 /
pl/sql 過程已成功完成。
sql>; select * from testlong1;
id name
history
1 dwh
work in foshan
2 sfg
work in guangzhou
long列不能出現在sql語句的某些部分:
1、在where、group by、order by、connect by子句以及在具有distinct 操作的select語句中。
2、sql函式(如substr或instr)
3、表示式或條件。
4、包含有group by子句的查詢的選擇表。
5、在子查詢的選擇表或由集合操作組合查詢選擇表。
6、create table as select語句的選擇表。
使用說明:
1、long 資料型別中儲存的是可變長字串,最大長度限制是2gb。
2、對於超出一定長度的文字,基本只能用long型別來儲存,資料字典中很多物件的定義就是用long來儲存的。
3、long型別主要用於不需要作字串搜尋的長串資料,如果要進行字元搜尋就要用varchar2型別。
4、很多任務具,包括sql*plus,處理long 資料型別都是很困難的。
5、long 資料型別的使用中,要受限於磁碟的大小。
能夠操作 long 的 sql 語句:
1、select語句
2、update語句中的set語句
3、insert語句中的values語句
限制:1、乙個表中只能包含乙個 long 型別的列。
2、不能索引long型別列。
3、不能將含有long型別列的表作聚簇。
4、不能在sql*plus中將long型別列的數值插入到另乙個**中,如insert into …select。
5、不能在sql*plus中通過查詢其他表的方式來建立long型別列,如create table as select。
6、不能對long型別列加約束條件(null、not null、default除外),如:關鍵字列(primary key)不能是 long 資料型別。
7、long型別列不能用在select的以下子句中:where、group by、order by,以及帶有distinct的select語句中。8、long型別列不能用於分布查詢。
9、pl/sql過程塊的變數不能定義為long型別。
10、long型別列不能被sql函式所改變,如:substr、instr。
利用oracle long型別字段,插入大文字
在編寫應用時,需要大量的插入大文字,但是oracle 的clob操作起來比較繁瑣,應此我沒有選擇使用clob,而是使用了oracle以前版本中的long型別[但是long型別有一些限制,在乙個表中只能有乙個long欄位]。
開始的時候我直接使用insert into table1 values(a,b[long])的方式插入資料庫,但是oracle有些限制一條語句不能超過4000個字元,並報ora-01704的錯誤。
經過查詢oracle 的文件找到了解決的方法,就是對於long的字段使用setcharacterstream()方法將string插入資料庫。
**:sql=」insert into msg_info valueslong型別字段],』c',sysdate,sysdate 」 msgterm 」,?)」;
pstat1 =
msg_id);
msg_gp_id);
msg_title);
stringreader(msg_
Oracle基本資料型別
資料型別 char n 描述定長字串,n位元組長,如果不指 n 1 to 節定長度,預設為1個位元組長 乙個 漢字為2位元組 可變長的字串,具體定義時指明最大長度n,這種資料型別可以放數字 字母以及ascii碼字符集 或者ebcdic等資料庫系統接受的字符集標準 中的所有符號。n 1 to 節如果資...
Oracle與DB2資料型別對應說明
通過下表介紹與db2 400資料型別之間的對應關係,是一對多的關係,具體採用哪種對應關係,應具體問題具體分析。注意事項 oracle中的date含有年 月 日 時 分 秒,它和db2 400中的date不相互對應,db2 400中的date只有年 月 日,time型別含有時 分 秒,因此日期和時間型...
資料型別整合
oracle與db2資料型別的分類對應說明 number oracle中的number型別可以對應db2 400中的很多態別,這種對應關係要依賴於oracle中number將用於儲存何種型別的資料,是整型還是帶有小數字的實型資料,另外還要考慮型別所占用的儲存空間,例如 samllint佔2 byte...