oracle 陣列型別

2022-02-07 03:46:40 字數 3171 閱讀 9394

create

orreplace

function my_test(p_str varchar2

)return

number

as--

普通變數

v_var varchar2(1000

);--

固定長度陣列

type v_ar is varray(10) of

varchar2(30

); my_ar v_ar:

=v_ar('

g','

m','

d','

龔','帥'

);--

可變長度數值

type type_array is

table

ofvarchar2(20) index

bybinary_integer;

var_array type_array;

--類似二維陣列

type serv_array is

table

of itmis_pri_serv_tbl%rowtype index

bybinary_integer;

var_serv serv_array;

--記錄塊,儲存一條記錄的變數,類似c的struct

type t_myrecord is

record (

field1

number

,field2

varchar2(50

));var_record t_myrecord;

begin

v_var :='

hello world';

dbms_output.put_line(v_var);

for i in

1..my_ar.count

loop

dbms_output.put_line(my_ar(i));

endloop;

------------------------------------------

var_array(1):='aa

';var_array(

2):='bb

'; --

下標必須是連續的

for i in

1..var_array.count

loop

dbms_output.put_line( var_array(i));

endloop;

-------------------------------------------- 可以作為乙個臨時表變數來使用

--select * bulk collect into var_serv from itmis_pri_serv_tbl where year =2013; --類似二維陣列

select

*bulk collect into var_serv from

itmis_pri_serv_tbl ;

--二維陣列的訪問

for i in

1..var_serv.count

loop

dbms_output.put_line(var_serv(i).serv_id);

dbms_output.put_line(var_serv(i).status);

endloop;

--記錄快訪問

with

temp(id,name) as

(select

1,'sam

'from dual union

allselect

2,'tom

'from dual union

allselect

3,'kelly

'from

dual

)select

id,name

into

var_record

from

temp

where id =1;

dbms_output.put_line(

'var_record:

'||var_record.field1||''

||var_record.field2) ;

return

length(p_str);

end;

/*1.count 返回集合中元素的個數

2.delete 刪除集合中所有元素

3.delete(x) 刪除元素下標為x的元素 對varray非法

4.delete(x,y) 刪除元素下標從x到y的元素 對varray非法

5.exist(x) 如果集合元素x已經初始化,則返回true, 否則返回false

6.extend 在集合末尾新增乙個元素 對index_by非法

7.extend(x) 在集合末尾新增x個元素 對index_by非法

8.extend(x,n) 在集合末尾新增元素n的x個副本 對index_by非法

9.first 返回集合中的第乙個元素的下標號,對於varray集合始終返回1。

10.last 返回集合中最後乙個元素的下標號, 對於varray返回值始終等於count.

11.limit 返回varry集合的最大的元素個數 index_by集合和巢狀表無用

12.next(x) 返回在第x個元素之後及緊挨著它的元素值,如果x是最後乙個元素,返回null.

13.prior(x) 返回在第x個元素之前緊挨著它的元素的值,如果x是第乙個元素,則返回null。

14.trim 從集合末端開始刪除乙個元素 對於index_by不合法

15.trim(x) 從集合末端開始刪除x個元素

var_array.next(3); //返回var_array(3)

*/

Oracle 陣列型別

oracle的陣列型別,範例 create or replace function my test p str varchar2 return number as 普通變數 v var varchar2 1000 固定長度陣列 type v ar is varray 10 of varchar2 3...

Oracle四 復合型別 陣列

復合型別 陣列 陣列所儲存的資料是具有統一資料型別 declare type varray name is varray 5 of varchar 25 v chain name varray name begin 未用建構函式賦值,下面的賦值是會報錯的。v chain name 2 34343 用...

oracle 資料型別和陣列型別的使用

儲存過程,需要用到迴圈語句,迭代出每乙個引數執行一次insert語句。引數需要先放入乙個一維資料,用for in 迴圈迭代出來。plsql的資料型別 1 數值型別 number pls integer binary integer 其中number 儲存整數或浮點數。pls integer 和bin...