oracle陣列定義與使用
- 定義固定長度的一維陣列
type type_array is varray(10) of varchar2(20);
1、varray(10)表示定義長度為10的陣列
2、varchar2(20)表示陣列為字元型,且元素字串長度不超過20
- 定義可變長度的一維陣列
type type_array is table of varchar2(20) index by binary_integer;
1、table表示可變長度
2、index by binary_integer 表示以符號整數為索引
一維陣列的初始化
/*初始化為空陣列*/
var_array type_array := type_array();
/*初始化為六個元素陣列*/
var_array type_array := type_array('ggs','jjh','wsb','csl','dd','bb');
/*直接對各個元素進行賦值*/
1、oracle陣列的索引從1開始,而不是從0開始2、count為陣列的長度var_array.extend(3); var_array(1) = '1'; var_array(2) = '2'; var_array(3) = '3'; /*通過遍歷陣列元素方式進行初始化操作*/ for i in 1..var_array.count loop var_array(i) = to_char(i); end loop;
- 定義多維陣列
type type_array is table of Tbl_User % rowtype index by binary_integer;
說明:Tbl_User 為基礎表多維陣列的初始化
select *
bulk collect into var_array
from t_user;
說明:bulk collect 表示將批量查詢資料直接插入collection中,而不是通過cursur一條條插入多維陣列的讀取方法
for i in 1..var_array.count loop
dbms_output.put_line(var_array(i).user_id);
dbms_output.put_line(var_array(i).username);
end loop;
- Oracle呼叫函式返回的陣列
方法一
declare
aa Tbl_StrSplit := Tbl_StrSplit();
begin
aa := PKG_TCH_COURSE_INIT.Fn_GetTermDate('root', 2);
dbms_output.put_line(aa(1));
dbms_output.put_line(aa(2));
end;
方法二 Select Fn_GetTermDate(P_SchoolKey, P_TermKey)
Into Tbl_TermDate
From dual;
- 強制修改已經被引用的自定義type
修改自定義type型別的OBJTYPE_VAR時失敗
OBJTYPE_VAR原有結構
CREATE OR REPLACE TYPE "OBJTYPE_VAR" AS OBJECT
(
field0 VARCHAR2(1000),
field1 VARCHAR2(1000)
)
修改後的新結構
CREATE OR REPLACE TYPE "OBJTYPE_VAR" AS OBJECT
(
serialNo Number,
field0 VARCHAR2(1000),
field1 VARCHAR2(1000)
)
執行修改時提示錯誤
“cannot drop or replace a type with type or table dependents”
原因是已經在其他地方使用了OBJTYPE_VAR,oracle不允許直接修改修改或刪除被引用的OBJTYPE_VAR,但可以通過加上force關鍵字強制執行。
強制重新建立
CREATE OR REPLACE TYPE "OBJTYPE_VAR" FORCE AS OBJECT
(
serialNo NUMBER,
field0 VARCHAR2(1000),
field1 VARCHAR2(1000)
)
強制刪除掉OBJTYPE_VAR
drop type OBJTYPE_VAR force
定義一維可變陣列
CREATE OR REPLACE TYPE "TBLTYP_VAR" Is Table Of VARCHAR2 (32767);
CREATE OR REPLACE TYPE "TBLTYP_Int" Is Table Of Pls_Integer;
定義三維可變陣列
CREATE OR REPLACE TYPE "OBJTYPE_VAR" FORCE AS OBJECT
(
serialNo NUMBER,
field0 VARCHAR2(1000),
field1 VARCHAR2(1000)
)
- oracle陣列屬性和函式
COUNT 返回集合中元素的個數
DELETE 刪除集合中所有元素
DELETE(x) 刪除元素下標為x的元素 對VARRAY非法
DELETE(x,y) 刪除元素下標從X到Y的元素 對VARRAY非法
EXIST(x) 如果集合元素x已經初始化,則返回TRUE, 否則返回FALSE
EXTEND 在集合末尾新增一個元素 對Index_by非法
EXTEND(x) 在集合末尾新增x個元素 對Index_by非法
EXTEND(x,n) 在集合末尾新增元素n的x個副本 對Index_by非法
FIRST 返回集合中的第一個元素的下標號,對於VARRAY集合始終返回1。
LAST 返回集合中最後一個元素的下標號, 對於VARRAY返回值始終等於COUNT.
LIMIT 返回VARRY集合的最大的元素個數 Index_by集合和巢狀表無用
NEXT(x) 返回在第x個元素之後及緊挨著它的元素值,如果x是最後一個元素,返回null.
PRIOR(x) 返回在第x個元素之前緊挨著它的元素的值,如果x是第一個元素,則返回null。
TRIM 從集合末端開始刪除一個元素 對於index_by不合法
相關推薦
oracle陣列定義與使用
定義固定長度的一維陣列 type type_array is varray(10) of varchar2(20); 1、varray(10)表示定義長度為10的陣列 2、varchar2(20)表示陣列為字元型,
Java的陣列定義與方法過載——有C++基礎的Java入門(三)
目錄 一、 陣列的定義 1、定義 2、 原理 3、 賦值方式 二、Java的方法過載 1、 概念 (1) 過載 (2) 目的 2、例子 (1) 比較兩個數值的大小 (2) 執行方式及結果 一、 陣列的定義 1、定義 資料型別 [ ]&n
Javascript Jquery 中的陣列定義與操作
1.認識陣列陣列就是某類資料的集合,資料型別可以是整型、字串、甚至是物件Javascript不支援多維陣列,但是因為數組裡面可以包含物件(陣列也是一個物件),所以陣列可以通過相互巢狀實現類似多維陣列的功能1.1 定義陣列宣告有10個元素的陣列var a = new Array(10);此時為a已經開闢了記憶體
陣列的定義與使用
陣列的定義與使用 1.1 陣列基本概念 1.2 陣列引用傳遞 1.3 陣列靜態初始化 1.4 二維陣列 1.5 陣列與方法呼叫 1.6 Java對陣列的支援 1.7 陣列案例:陣列資料統計 1.8 陣列案例:陣列排序 1.9 陣列案例:陣列轉置 1.10 陣列案例:二分查詢(前提:陣
多維陣列的定義與使用
1、多維陣列 多維陣列可以看成陣列中的陣列,即陣列中儲存的型別為陣列即是多維陣列; 2、多維陣列的定義(以二維陣列為例); 第一種:動態初始化 int[][] arr = new int[3][4]; 第二種:靜態建立;不能給定長度 int[][] arr
Java中陣列的定義與使用
陣列 — 一種引用資料型別 一、一維陣列的定義與使用 1.1 陣列初始化 1.1.1 陣列動態初始化: 資料型別[ ] 陣列名稱 = new 資料型別[陣列長度]; 舉個例子: 陣列通過下標索引來獲取元素,即陣列名[下標],下標預設從0開始,到長度
JavaScript的函式(定義與解析、匿名函式、函式傳參、return關鍵字)和陣列(操作資料的方法、多維陣列、陣列去重)
函式 函式就是重複執行的程式碼片。 1、函式定義與執行 <script type="text/javascript"> // 函式定義 function aa(){ alert('hello!'); } // 函式執行
陣列(1)——陣列的定義與讀寫
陣列: 1.陣列的定義 new Array(length/content);
陣列(1)-陣列的定義與陣列的讀和寫
陣列: 陣列的定義 new Array(length/content); 字面量 陣列的讀和寫 arr[num]//不可以溢位讀 arr[num] = xxx//可以溢位讀 研究一個東西先研究他的定義方式,物件有四種定義方式,第一種是
Java中的方法定義與陣列使用
方法定義 方法是一個過程體一段被封裝的,可重複呼叫的程式碼塊。 方法的宣告: public static 方法返回型別 方法名稱 ([引數型別1 變數1,引數型別2 變數2.....]){ 方法程式碼塊; [return 返回值;] } 除void型別外,其他型別的方法必須有返
陣列(上一遍中寫的都是集合的定義與用法)
概念 同一種類型資料的集合。其實陣列就是一個容器。 陣列的好處 陣列的最大好處就是能都給儲存進來的元素自動進行編號. 注意編號是從0開始。 格式1: 元素型別[] 陣列名 = new
全域性陣列,區域性陣列,靜態陣列的定義與初始化區別
測試 例項: 定義陣列,未初始化 #define LEN1 5 static int array_static_glogal[LEN1];//定義靜態全域性陣列,未初始化陣列成員 int array_glogal[LEN1];
JavaSE之陣列的定義與使用
陣列初始化: 1.陣列動態初始化(宣告並開闢陣列) 資料型別 [ ] 陣列名稱 = new 資料型別 [ 長度 ] eg:宣告並開闢一個長度為5的整形陣列 int [ ] data = new int [5]; 當陣列開闢之後,可採用如下方式進行操作: a.陣列
二維陣列與一維陣列定義型別的對比;
int(*p)[4]:指向一個長度為4的整型陣列的指標,陣列指標; int *p[4]:儲存指標的陣列,指標陣列; int *pFun():返回指標的函式,指標函式; int (*p)():指向函式的指標,函式指標; 一維陣列表示的型別: 二維陣列表示的型別:
7、陣列的定義與使用
陣列的定義及使用 基本概念 1.陣列是一組相同型別變數的集合。陣列屬於引用資料型別。 2.陣列的定義語法 (1)宣告並開闢陣列: 陣列型別 陣列名[] = new 資料型別[陣列長度] (2)分步完成: // 宣告陣列 陣列型別 陣列名[] = null; // 開闢陣列 陣列名
Java——陣列的定義與使用
基本概念 1.1 動態初始化 陣列是引用資料型別,有記憶體分配問題。 陣列動態初始化( 宣告並開闢陣列): 當陣列開闢空間之後,就可以採用如下方式進行操作: 資料型別[] 陣列名稱 = new 資料型別[長度]; 陣列的訪問通過索引完成。即:“陣列名稱[
javaSE中陣列的定義與使用
一維陣列的初始化 收先要說明一點,java中的陣列和C語言中的陣列的寫法是不一樣的,之前一直學的C語言,在這裡改改過來了!!! java中的陣列初始化分為兩種:動態初始化和靜態初始化 動態初始化 資料型別[] 陣列名稱 = new 資料型別 [長度] ;
js中陣列的定義與使用
首先,我們來說一下陣列的定義。陣列就是在堆中開闢的一串連續的記憶體空間,並將堆地址存在棧中。在java 中,陣列的定義為一組相同型別的變數的集合。而在js中,一個數組可以存放任意型別的資料。建立陣列有兩種型別方式:1. 使用new欄位 通過 ne
PHP三維陣列的定義與遍歷
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>三
java陣列的定義與使用
一.什麼是陣列 1陣列的概念 同一種類型資料的集合。其實陣列就是一個容器。 2 陣列的好處 陣列的最大好處就是能都給儲存進來的元素自動進行編號.注意編號是從0開始。 3陣列的建立 方式1:動態建立方式 元素型別[] 陣列名= new 元素型別[元素個數或陣列長度]; 示例:int[] arr