程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle中變長數組varray,嵌套表,集合使用方法,oraclevarray

oracle中變長數組varray,嵌套表,集合使用方法,oraclevarray

編輯:Oracle教程

oracle中變長數組varray,嵌套表,集合使用方法,oraclevarray


創建變長數組類型

CREATE TYPE varray_type AS VARRAY(2) OF VARCHAR2(50); 

這個變長數組最多可以容納兩個數據,數據的類型為 varchar2(50)

更改元素類型的大小或精度

可以更改變長數組類型和嵌套表類型 元素的大小。

ALTER TYPE varray_type 
MODIFY ELEMENT TYPE varchar2(100) CASCADE;

CASCADE選項吧更改傳播到數據庫中的以來對象。也可以用 INVALIDATE 選項使依賴對象無效

增加變長數組的元素數目

ALTER TYPE vrray_name
MODIFY LIMIT 5 CASCADE;

使用變長數組

CREATE TABLE table_name(
column_name type,
var_col_name varray_type
);

獲得變長數組的信息

DESC[RIBE] varray_type;

SELECT * 
FROM user_varrays
WHERE type_name = varray_name;

DESC 獲得的是 varray_type AS VARRAY(2) OF VARCHAR2(50)

填充變長數組元素

INSERT INTO table_name VALUES(
 value,
 varray_type(
  'xxxx',
  'xx',
  'x')
);

可以一次向變長數組添加多個數據。

查找變長數組元素

SELECT *
FROM table_Name;

如果變長數組中的元素有多個,會一起輸出,輸出的數據列是一個長列,跟包含對象的表一樣。

更改變長數組元素

要想更改變長數組的一個元素,需要把其他元素一起更改,整個變長數組作為一個整體來的。

UPDATE table_name
SET var_col_name = varray_type('xxx','xxxxxx')
WHERE expr1;

創建嵌套表類型

CREATE TYPE table_type AS TABLE OF type;

其中type 可以為任何類型,包括varray 和 object ,通常object 居多。

使用嵌套表類型

CREATE TABLE table_name(
 column_name type,
 tab_col_name table_type
)
NESTED TABLE
 table_col_name
STORE AS
 next_table_name [TABLESPACE user_name];

創建嵌套表的時候要為嵌套表類型另外創建一個表來保存數據, NESTED 以下的部分就是在干這事。那個表的名稱為: next_table_name

TABLESPACE 可以將另外創建表放到另外的空間。

獲得表信息

SET DESCRIBE DEPTH 2
DESC[RIBE] table_name;

也可以直接通過數據字典來獲得嵌套表的信息

SELECT *
FROM user_nested_tables
WHERE table_name = xxxx;

填充、查找嵌套表元素

跟變長數組方法一樣

更改嵌套表元素

跟變長數組不同,嵌套表的元素可以單獨更改:可以插入、更改和刪除嵌套表元素。

插入:

INSERT INTO TABLE(
 SELECT tab_col_name FROM table_name WHERE expr)
 VALUES(
  table_type('xxxx')
 )
);

更改:

UPDATE TABLE(
 SELECT tab_col_name FROM table_name WHERE expr
) T
SET
 VALUE(T) = table_type(
  'xxxx')
)
WHERE 
 VALUE(T) = table_type(
  expr2
  );

T 為獲得需要修改的那行數據對應的 嵌套表位置,WHERE 為判斷語句,如果table_type 為object類型,expr2 這樣寫: 'x','xx','xxx'

刪除:

DELETE FROM TABLE(
 SELECT tab_col_name FROM table_name WHERE expr
)T
WHERE
 VALUE(T) = table_type(
  expr2
 );

集合方法

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved