1、LONG 數據類型中存儲的是可變長字符串,最大長度限制是2GB。
2、對于超出一定長度的文本,基本只能用LONG類型來存儲,數據字典中很多對象的定義就是用LONG來存儲的。
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=brec.history where id=brec.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
摘自http://whitechief.itpub.net/post/1825/47242
新聞熱點
疑難解答