我是靠谱客的博主 活泼镜子,最近开发中收集的这篇文章主要介绍oracle字符数组初始化,oracle 数组学习 学习笔记,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

/******************************

索引表

元素个数没有限制,并且下标可以是负值

******************************/

DECLARE

TYPE cell_phone_type IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER; --以数字做索引TYPE phone_number IS TABLE OF NUMBER(11) INDEX BY VARCHAR2(100); --以varchar2做索引 index by 只能跟BINARY_INTEGER、PLS_INTEGER、VARCHAR2三种类型l_cell_phone_type cell_phone_type;

l_phone_number phone_number;

l_number_index VARCHAR2(100);

BEGIN

l_cell_phone_type(2) := 'Nokia 6210';

l_cell_phone_type(1) := 'HTC Magic';

l_phone_number('queen') := 18612345678;

l_phone_number('king') := 18687654321;

FOR i IN l_cell_phone_type.first .. l_cell_phone_type.last

LOOP

dbms_output.put_line(l_cell_phone_type(i));

END LOOP;

l_number_index := l_phone_number.first;

LOOP

EXIT WHEN l_number_index IS NULL;

dbms_output.put_line(l_number_index || ''' phone number is ' || l_phone_number(l_number_index));

l_number_index := l_phone_number.next(l_number_index);

END LOOP;

/******************************

output:

HTC Magic

Nokia 6210

king' phone number is 18687654321

queen' phone number is 18612345678

不管是先输入哪个 输出时候是按照排序规则顺序输出的

******************************/END;

/******************************

嵌套表

将数组类型作为一个字段存贮与表中

******************************/CREATE TYPE phone IS TABLE OF VARCHAR2(128);

CREATE TABLE contact(record_id NUMBER,

employee_id NUMBER,

phone_number phone) NESTED TABLE phone_number store AS phone_number;

drop TABLE contact;

drop TYPE phone;

DECLARE

l_phone phone;

BEGIN

INSERT INTO contact

VALUES

(1,

1,

phone('18612345678',

'0318-888888'));

INSERT INTO contact

VALUES

(2,

2,

phone('18612345678',

'0318-9999999'));

UPDATE contact

SET phone_number = phone('18612345678',

'0318-9999999',

'010-77777777')

WHERE record_id = 1;

COMMIT;

SELECT phone_number

INTO l_phone

FROM contact

WHERE record_id = 2;

FOR i IN l_phone.first .. l_phone.last

LOOP

dbms_output.put_line(l_phone(i));

END LOOP;

END;

/******************************

VARRAY

定长的数组

也可以作为table的列类型(省略)

******************************/

declare

type phone is type of varray(20) of varchar2(100);--一个20个元素的字符串数组

l_phone phone

begin

for i in 1..20 loop

l_phone(i):=to_char(2*i+1);

end loop;

end;

/******************************

多维数组

varry 和 索引表都可以 varry为固定元素个数的多维数组

******************************/

type v1 is type of varray(100) of varchar2(100);

type v2 is type of varray(100) of v1;--v2就是100×100的字符串数组

type v3 is table of varchar2(100) index by binary_integer;

type v4 is table of v3 index by binary_integer;--v4是行和列都不确定的字符串二维数组

type v5 is table of v1 index by binary_integer;--可以组合使用 比如列固定 行不固定

--v5还可以有另一种实现 比如v7

type v6 is record

(name varchar2(100),

birth date);

type v7 is table of v6 index by binary_integer;

/******************************

函数

******************************/

v.count;--个数

v.delete;--删除全部

v.delete(1);--删除索引1

v.delete(1,3);--删除索引1..3

v.first;

v.last;

v.prior(i);--i的前一个索引 不一定是i-1 因为有可能已经被delete了

v.next(i);--i的下一个索引 也不一定是i+1

v.exists(i);--是否存在索引是i的元素

/******************************

异常

******************************/

COLLECTION_IS_NULL --- 调用一个空集合的方法 , 集合未被初始化

NO_DATA_FOUND --- 下标索引指向一个被删除的元素,或是关联数组中不存在的元素

SUBSCRIPT_BEYOND_COUNT --- 下标索引值超过集合中的元素个数SUBSCRIPT_OUTSIDE_LIMIT ---下标索引超过允许范围之外

VALUE_ERROR --- 下标索引值为空,或是不是指定的下标类型

最后

以上就是活泼镜子为你收集整理的oracle字符数组初始化,oracle 数组学习 学习笔记的全部内容,希望文章能够帮你解决oracle字符数组初始化,oracle 数组学习 学习笔记所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部