在設計表時,一些列用於很簡單且資料量很少的資訊,比如各級角色名,幾個部門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 位...