1. 程式人生 > >oracle陣列定義與使用

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'); 

            /*直接對各個元素進行賦值*/

      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;
1、oracle陣列的索引從1開始,而不是從0開始2、count為陣列的長度
  • 定義多維陣列
      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不合法   

TRIM(x)           從集合末端開始刪除x個元素

相關推薦

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