Oracle中的long型別

2021-08-31 14:11:56 字數 4154 閱讀 6191

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

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插入資料庫。

public void queryresult4view()

system.out.println("-------------------------view name: " + name);

system.out.println(sb.tostring()); }

stat.close();

conn.close();

} catch (sqlexception e) catch (ioexception e)

sess.clear();

sess.close(); }

Oracle中Long型別的用法總結

long列不能出現在sql語句的某些部分 1 在where group by order by connect by子句以及在具有distinct 操作的select語句中。2 sql函式 如substr或instr 3 表示式或條件。4 包含有group by子句的查詢的選擇表。5 在子查詢的選擇...

oracle裡long型別的總結

oracle裡long型別的總結,閱讀oracle裡long型別的總結,1 long 資料型別中儲存的是可變長字串,最大長度限制是2gb。2 對於超出一定長度的文字,基本只能用long型別來儲存,資料字典中很多物件的定義就是用long來儲存的。1 long 資料型別中儲存的是可變長字 1 long ...

oracle裡long型別的總結

1 long 資料型別中儲存的是可變長字串,最大長度限制是2gb。2 對於超出一定長度的文字,基本只能用long型別來儲存,資料字典中很多物件的定義就是用long來儲存的。3 long型別主要用於不需要作字串搜尋的長串資料,如果要進行字元搜尋就要用varchar2型別。4 很多任務具,包括sql p...