oracle VARRAY資料型別

2021-05-28 17:34:41 字數 1451 閱讀 4111

在設計表時,一些列用於很簡單且資料量很少的資訊,比如各級角色名,幾個部門id等等,如果不願意多建個表,除了直接用乙個varchar2欄位來儲存用","分割的字串,有個更好的辦法:用varray(可變長度資料型別)型別的字段。

create or replace type intarray as varray (200)  of integer

create table t1 ( id integer, name varchar2(64), allowed_deps intarray);

insert into t1 values(1,』aaaa』, intarray(0,1,2,3,4));

選擇t1表allowed_deps欄位含有1的記錄:

select * from  t1 where 1 in (select * from table(allowed_deps));

選擇allowed_deps欄位含有1或者2的記錄:

select * from  t1 where exists (select * from  table(allowed_deps) where column_value=1 or column_value=2);

選擇allowed_deps欄位同時含有1、2、3的記錄:

select * from  t1 where not exists ((select * from table(intarray(1,2,3))) minus (select * from table(allowed_deps)));

不可以單獨修改varray 型別中的單個元素,但nested table型別的可以。

用jdbc訪問:

resultset rs = 。。。; 

array arr = rs.getarray(1);

bigdecimal  dids = (bigdecimal)arr.getarray();

設定:integer ids=new integer();

connection conn=getconnection();

array arr = conn.createarrayof("intarray", ints); jdbc driver version11.2.0.1.0尚不支援

oracleconnection oconn = (oracleconnection)conn.unwrap(oracleconnection.class);  在tomcat6,需oracleconnection oconn = (oracleconnection)((delegatingconnection) conn).getinnermostdelegate();  datasource配置加accesstounderlyingconnectionallowed="true"後重啟tomcat

array arr = oconn.createarray("intarray", ids); 

pst.setarray(1, arr);

Oracle VARRAY的實際應用簡介

oracle varray 變長陣列 通俗的講就是乙個儲存有序的元素集合,而其每個元素都有乙個相關索引,該索引相對應元素在陣列中的位置。變長陣列存在大小的限制,但是可以動態進行更改。建立變長陣列語句 create type varray phone as varray 3 of varchar2 5...

Oracle VARRAY的實際應用簡介

以下的文章是對oracle varray建立變長陣列語句的描述,以及oracle varray 變長陣列 的實際應用的介紹,望你在瀏覽之後會有會所收穫。ad oracle varray 變長陣列 通俗的講就是乙個儲存有序的元素集合,而其每個元素都有乙個相關索引,該索引相對應元素在陣列中的位置。變長陣...

mysql tinlong MySQL資料型別詳解

引言 mysql中定義資料欄位的型別對你資料庫的優化是非常重要的。mysql支援多種型別,大致可以分為三類 數值 日期 時間和字串 字元 型別,如下腦圖所示 數值型別 型別大小範圍 有符號 範圍 無符號 用途 tinyint 1 位元組 128,127 0,255 小整數值 smallint 2 位...