Oracle_数组
来源:互联网 发布:中国人阴茎长度 知乎 编辑:程序博客网 时间:2024/06/14 11:20
via: http://www.cnblogs.com/htht66/archive/2012/02/11/2346743.html
http://fxz-2008.iteye.com/blog/469766
Oracle数组一般可以分为固定数组和可变数组
集合:是具有相同定义的元素的聚合。Oracle有两种类型的集合:
可变长数组(VARRAY):可以有任意数量的元素,但必须预先定义限制值。
嵌套表:视为表中之表,可以有任意数量的元素,不需要预先定义限制值。
在PL/SQL中是没有数组(Array)概念的。但是如果程序员想用Array的话,就得变通一下,用TYPE 和Table of Record来代替多维数组,一样挺好用的。
固定数组
-- ============ char array ===============
DECLARE
-- declare fixed array
TYPE arry_var IS VARRAY(2) OF VARCHAR2(10);
arry_name arry_var;
BEGIN
-- init array
arry_name := arry_var('tom', 'jim','tim');
for i in 1..arry_name.count loop
dbms_output.put_line(arry_name(i));
end loop;
END;
-- ================ number array ========
DECLARE
-- declare fixed array
TYPE arry_num IS VARRAY(10) OF NUMBER;
arry_top arry_num;
BEGIN
-- init array
arry_top := arry_num(1,2,3);
dbms_output.put_line(arry_top(1));
dbms_output.put_line(arry_top(2));
END;
1 VARRAY(10)变数数组大小为10
2OF NUMBER 表示数值类型是number
可变数组
一维数组
DECLARE
TYPE t_table IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
v_table t_table;
v_cnt NUMBER;
BEGIN
v_table(1) := '1';
v_table(2) := '3';
v_table(3) := '9';
v_cnt := v_table.COUNT;
FOR i IN 1 .. v_cnt LOOP
dbms_output.put_line(v_table(i));
END LOOP;
END;
多维数组
1 Create Table
create table XXUSER
(
USER_ID NUMBER,
USER_NAME VARCHAR2(255),
SEX VARCHAR2(2),
AGE NUMBER(3),
ADDRESS VARCHAR2(2000)
)
2 定义结果集(Record)
存放xxuser的部分字段
DECLARE
-- only 2 fileds
TYPE t_record_user IS RECORD(
user_id xxuser.user_id%type,
user_name xxuser.user_name%type);
TYPE t_user IS TABLE OF t_record_user INDEX BY BINARY_INTEGER;
v_arry_user t_user;
BEGIN
SELECT user_id, user_name BULK COLLECT INTO v_arry_user FROM xxuser;
FOR i IN 1 .. v_arry_user.COUNT LOOP
dbms_output.put_line(v_arry_user(i).user_name);
END LOOP;
END;
3 使用ROWTYPE
存放xxuser的全部字段,比Record简洁。
DECLARE
-- ALL,XXUser(user_id, user_name, sex, age, address)
TYPE t_user IS TABLE OF xxuser%ROWTYPE INDEX BY BINARY_INTEGER;
v_arry_user t_user;
BEGIN
SELECT * BULK COLLECT INTO v_arry_user FROM xxuser;
FOR i IN 1 .. v_arry_user.COUNT LOOP
dbms_output.put_line(v_arry_user(i).user_name || v_arry_user(i).sex);
END LOOP;
END;
- Oracle_数组
- ORACLE_语言
- Oracle_约束
- oracle_日期
- oracle_三角函数
- ORACLE_触发器
- ORACLE_数据处理
- oracle_视图
- Oracle_字典
- oracle_简介
- Oracle_函数
- oracle_事务
- Oracle_数据处理
- Oracle_序列
- oracle_函数
- Oracle_初步认知
- Oracle_连接数据库语句
- Oracle_用户创建
- 文本框输入值进行实体多属性查询
- Java_最原始的获取数据库连接的两种方式
- 3.4移动产品设计
- z-index悬浮的层次不一样,导致变形
- git分支在开发项目中的使用
- Oracle_数组
- Maven_中文编码问题
- Scrapy框架的用法实例
- 纯css做成的小鹿地球月亮闪烁的星星
- 面试答案
- Maven_5个必须掌握的maven命令
- Linux_压缩解压详解
- Spring_<context:component-scan>
- python脚本练习