- 浏览: 519184 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (299)
- Oracle(pl/sql_Erp_Pro*C) (69)
- 设计模式 (4)
- spring (23)
- ext (17)
- apache开源项目应用 (4)
- jquery (16)
- 生活琐事 (8)
- 下载资源 (23)
- mysql (2)
- Eclipse使用积累 (5)
- 报表类(报表/图表) (13)
- php (4)
- Web多彩文本框 (3)
- json (4)
- jqgrid (2)
- ant (2)
- java算法积累 (8)
- EL表达式/JSTL (4)
- poi (3)
- gwt (2)
- 爬网第一步 (2)
- javascript (17)
- Javaweb (8)
- tomcat (1)
- flex (1)
- Java&DB (3)
- J2SE (7)
- linux (3)
- 数据结构 (1)
- dot net (5)
- struts (1)
- ibatis (1)
- log4j (1)
- 项目管理 (1)
- Java native interface(jni,jacob......) (5)
- applet (1)
- VB.net/C#.net/JNI (20)
- css (1)
- Sqlite (1)
- servlet (1)
- REST (1)
最新评论
-
wenhurena:
能不能给一下解压密码roki.work.2017@gmail. ...
Ebs解体新書と学習資料1 -
liutao1600:
楼主写的太好了,每天学习~~
Spring_MVC(6)测试 -
liutao1600:
太好了,每天学习你的文章~~~
Spring_MVC(3)表单页面处理 -
liutao1600:
学习了,太好了
Spring_MVC(2)控制层处理 -
liutao1600:
学习了~~~
Spring_MVC(1)构建简单web应用
record:该集合可以存储一对多的标量属性。
pl/sql表:是pl/sql代码中的“表”,只存在应用运行期间(内存里),类似“数组”,稀疏的,大小可以动态增长,可以有负下标,但不能存储在数据库表中。
varray:与pl/sql区别是可以在表列中存储,是密集的,不能删除单独记录,不能有负下标,固定大小的集合。
nested table:可以在表列中存储,稀疏的,可以删除单独记录,不能有负下标,大小可变。
1、记录:
SQL> declare
2 type emp_rec_t is record(
3 no number,
4 name varchar2(10)
5 );
6 emp1 emp_rec_t;
7 emp2 emp_rec_t;
8 begin
9 emp1.no:=1;
10 emp1.name:='chennan';
11 emp2:=emp1; 同一记录类型,可以直接赋值
12 dbms_output.put_line('emp2.no='||emp2.no);
13 dbms_output.put_line('emp2.name='||emp2.name);
14 end;
15 /
emp2.no=1
emp2.name=chennan
PL/SQL 过程已成功完成。
SQL>
SQL> declare
2 type emp_rec_t is record(
3 no number,
4 name varchar2(10)
5 );
6
7 type mgr_rec_t is record(
8 no number,
9 name varchar2(10)
10 );
11
12 emp1 emp_rec_t;
13 mgr1 mgr_rec_t;
14
15 begin
16 emp1.no:=1;
17 emp1.name:='chennan';
18 mgr1:=emp1; -- 尽管字段类型相同,但不是同一记录类型,不能直接赋值
19 end;
20 /
mgr1:=emp1; -- 尽管字段类型相同,但不是同一记录类型,不能直接赋值
*
ERROR 位于第 18 行:
ORA-06550: 第 18 行, 第 7 列:
PLS-00382: 表达式类型错误
ORA-06550: 第 18 行, 第 1 列:
PL/SQL: Statement ignored
2、pl/sql表:
SQL> declare
2 -- 自定义记录类型
3 type rec_t is record(
4 empno number,
5 ename varchar2(10)
6 );
7 -- 数组类型
8 type varray_t1 is table of varchar(10) index by binary_integer; -- 单字段数组
9 type varray_t2 is table of rec_t index by binary_integer; -- 自定义多字段数组
10 type varray_t3 is table of emp%rowtype index by binary_integer; -- 表的行记录数组
11 -- 数组变量
12 varray1 varray_t1;
13 varray2 varray_t2;
14 varray3 varray_t3;
15 i integer;
16 j integer;
17 begin
18 i:=0;
19 for x in (select * from emp where rownum<4) loop
20 varray1(i):=x.ename;
21 varray2(i).empno:=x.empno;
22 varray2(i).ename:=x.ename;
23 varray3(i):=x;
24 i:=i+1;
25 end loop;
26 dbms_output.put_line('--------------');
27 for i in 0 .. varray1.count-1 loop
28 dbms_output.put_line('varray1('||i||')='||varray1(i));
29 end loop;
30 dbms_output.put_line('--------------');
31 for i in 0 .. varray2.count-1 loop
32 dbms_output.put_line('varray2('||i||').empno='||varray2(i).empno);
33 dbms_output.put_line('varray2('||i||').ename='||varray2(i).ename);
34 end loop;
35 dbms_output.put_line('--------------');
36 for i in 0 .. varray3.count-1 loop
37 dbms_output.put_line('varray3('||i||').empno='||varray3(i).empno);
38 dbms_output.put_line('varray3('||i||').ename='||varray3(i).ename);
39 dbms_output.put_line('varray3('||i||').job='||varray3(i).job);
40 -- ......
41 end loop;
42 dbms_output.put_line('--------------');
43 i:=varray3.first;
44 while i is not null loop
45 dbms_output.put_line('varray3('||i||').ename='||varray3(i).ename);
46 i:=varray3.next(i);
47 end loop;
48 dbms_output.put_line('--------------');
49 i:=varray3.first;
50 j:=varray3.last;
51 while i<=j loop
52 dbms_output.put_line('varray3('||i||').ename='||varray3(i).ename);
53 i:=varray3.next(i);
54 end loop;
55 dbms_output.put_line('----- before delete -----');
56 dbms_output.put_line('varray3 has '||varray3.count||' rows');
57 varray3.delete(1);
58 dbms_output.put_line('delete rows(1) then varray3 has '||varray3.count||' rows');
59 dbms_output.put_line('----- now varray3 :----');
60 i:=varray3.first;
61 j:=varray3.last;
62 while i<=j loop
63 dbms_output.put_line('varray3('||i||').ename='||varray3(i).ename);
64 i:=varray3.next(i);
65 end loop;
66 varray3.delete;
67 dbms_output.put_line(' ----- when delete all,now varray3 has '||varray3.count||' rows');
68 end;
69 /
--------------
varray1(0)=SMITH
varray1(1)=ALLEN
varray1(2)=WARD
--------------
varray2(0).empno=7369
varray2(0).ename=SMITH
varray2(1).empno=7499
varray2(1).ename=ALLEN
varray2(2).empno=7521
varray2(2).ename=WARD
--------------
varray3(0).empno=7369
varray3(0).ename=SMITH
varray3(0).job=CLERK
varray3(1).empno=7499
varray3(1).ename=ALLEN
varray3(1).job=SALESMAN
varray3(2).empno=7521
varray3(2).ename=WARD
varray3(2).job=SALESMAN
--------------
varray3(0).ename=SMITH
varray3(1).ename=ALLEN
varray3(2).ename=WARD
--------------
varray3(0).ename=SMITH
varray3(1).ename=ALLEN
varray3(2).ename=WARD
----- before delete -----
varray3 has 3 rows
delete rows(1) then varray3 has 2 rows
----- now varray3 :----
varray3(0).ename=SMITH
varray3(2).ename=WARD
----- when delete all,now varray3 has 0 rows
PL/SQL 过程已成功完成。
SQL>
3、varrays
SQL> create type emp_type as object(
2 empno number,
3 ename varchar2(10)
4 );
5 /
类型已创建。
SQL> create type emp_type_list as varray(50) of emp_type;
2 /
类型已创建。
SQL> create table myemp(
2 deptno number,
3 deptname varchar2(10),
4 manager emp_type,
5 employees emp_type_list
6 );
表已创建。
SQL> insert into myemp(deptno,deptname,manager,employees) values(
2 10,'ACCOUNTING',emp_type(7782,'CLARK'),emp_type_list(emp_type(7934,'MILLER'),emp_type(1223,'TEST')));
已创建 1 行。
SQL> insert into myemp(deptno,deptname,manager,employees) values(
2 20,'RESEARCH',emp_type(7566,'JONES'),emp_type_list(emp_type(7902,'FORD'),emp_type(7788,'SCOTT'),emp_type(4567,'OTHER')));
已创建 1 行。
SQL> col employees for a100
SQL> col manager for a30
SQL> select * from myemp;
DEPTNO DEPTNAME MANAGER(EMPNO, ENAME) EMPLOYEES(EMPNO, ENAME)
---------- ---------- ------------------------------ ----------------------------------------------------------------------------------------
10 ACCOUNTING EMP_TYPE(7782, 'CLARK') EMP_TYPE_LIST(EMP_TYPE(7934, 'MILLER'), EMP_TYPE(1223, 'TEST'))
20 RESEARCH EMP_TYPE(7566, 'JONES') EMP_TYPE_LIST(EMP_TYPE(7902, 'FORD'), EMP_TYPE(7788, 'SCOTT'), EMP_TYPE(4567, 'OTHER'))
已选择2行。
发表评论
-
IBatis调用ORACLE的存储过程、函数的返回结果集例子
2012-03-05 23:31 2133import java.io.Serializabl ... -
Oracle分页函数样例——用于提高当前框架分页性能
2012-03-05 23:27 1387create or replace procedure P ... -
Oracle入门课件
2011-12-11 22:43 1010下载附件 -
自己经常上的Oracle官网的一些链接~~是啥自己点开看
2011-11-17 23:27 1117http://www.oracle.com/pls/db ... -
Oracle性能诊断艺术源码
2011-08-16 00:51 880请下载。 -
oracle support
2011-06-23 16:34 920https://support.oracle.com/CSP/ ... -
oracle 11g sql code
2011-02-24 20:55 1109附件参考 -
Oracle SQL优化
2011-01-19 23:16 877详见附件。讲述优化器。 -
Oracle PGA概念及调整
2011-01-03 23:18 1750--预备知识PGA(Process Global Area), ... -
修改Oracle SGA——防止oracle内存分配不足而down机
2011-01-03 23:16 2341在安装oracle 10g r2 数据库时,默认的SGA大 ... -
oracle SGA
2011-01-03 23:14 1365系统全局区又称SGA (System Global A ... -
Oracle 高水位概念(hwm)
2010-12-22 22:09 1435说到HWM,我们首先要简要 ... -
CDC积累的plsql用的各种例子
2010-11-09 15:49 836自用,有密码!请勿浪费时间下载。 -
oracle Erp安装和具体财务模块介绍
2010-10-11 12:54 1180http://bbs.erp100.com/thread-20 ... -
Oracle察看表约束
2010-10-08 16:07 11071、我们创建的对象可以从"USER_"开通 ... -
Oracle 行列转换积累
2010-09-29 11:36 1705行列转换包括以下六种情况:*列转行*行转列*多列转换成字符串 ... -
oracle bulk collection
2010-09-14 18:26 1256Oracle Bulk Collection & ... -
oracle discover
2010-09-03 16:28 958oracle discover -
Oracle rawtohex hextoraw
2010-09-03 15:03 3186Oracle 8.1.7 SQL> ed ... -
Oracle Raw,number,varchar2转换
2010-09-03 14:56 2262Oracle Raw,number,varchar2...转换 ...
相关推荐
此外,PL/SQL还支持集合类型,如VARRAY(可变数组)和TABLE(表类型),这对于处理大量数据非常有用。 这本书的配套源代码可能会涵盖以下几个方面: 1. **基础操作**:包括简单的SQL查询、变量声明、流程控制...
2. **复合数据类型**:介绍PL/TABLE、记录类型(%ROWTYPE)以及集合类型(VARRAY和NESTED TABLE),这些都是处理大量数据或构建复杂数据结构的关键工具。 3. **游标**:讲解如何使用显式和隐式游标进行查询和遍历...
9. **PL/SQL记录和表类型**:了解如何定义和使用PL/SQL记录,以及使用PL/SQL表类型(VARRAY和TABLE)进行集合操作。 10. **游标变量和复合类型**:使用游标变量进行动态SQL操作,以及利用复合类型处理复杂的数据...
### PL/SQL基础概念与应用 #### 一、PL/SQL简介 PL/SQL(Procedural Language for SQL)是Oracle数据库的一种专用编程语言,它将过程化代码块与SQL命令相结合,允许开发者创建功能丰富的应用程序和服务。PL/SQL...
- RECORD(记录类型,常用)、TABLE(表格类型,常用)、VARRAY(变长数组,较少用)。 - **引用类型**: - REFCURSOR(游标)、REF object_type。 - **LOB (Large Object)**: 大对象类型,用于存储大量数据,如...
索引数组通过数字索引访问,关联数组则通过键值对访问,如VARRAY(固定大小数组)和TABLE(动态大小数组)。 ### 3. PL/SQL中的SQL 3.1 **PL/SQL中的DML** DML(Data Manipulation Language)包括INSERT、UPDATE...
- **复合类型**:如记录类型(RECORD)和数组(VARRAY, TABLE)允许自定义复杂的数据结构。 - **%ROWTYPE**:用于创建与表行结构相同的变量,方便操作整行数据。 - **LOB类型**:包括BLOB(Binary Large Object)...
用户可以创建自己的记录类型(RECORD)、集合类型(VARRAY或NESTED TABLE)以及对象类型,以满足特定业务需求。这些自定义类型提高了数据处理的灵活性和精确性。 4. **异常处理**:PL/SQL提供了一套完整的异常处理...
对象类型可以看作是包含一组相关属性(字段)的结构,集合类型如VARRAY和NESTED TABLE,提供了类似于数组和表格的数据存储方式。 3. **包的使用**:通过调用包中的过程和函数,可以在PL/SQL代码中执行数据库操作。...
PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库的一种扩展,它将SQL的查询功能与过程化编程语言(如Pascal或C)的控制结构结合在一起,为数据库开发提供了一种强大的工具。这篇文档"PL...
### Oracle数据库PL/SQL教程知识点概览 #### 1. PL/SQL介绍 PL/SQL(Procedural Language for SQL)是Oracle数据库的一种过程化语言,它将SQL语句与传统编程语言的功能相结合,用于创建复杂的数据库应用程序。PL/...
12. **PL/SQL的高级特性**:探索PL/SQL的并发控制(如锁定和乐观锁)、动态SQL、嵌套表和关联数组等高级特性。 通过《Oracle-Pl-Sql》这个压缩包,你将获得一系列与上述知识点相关的实例脚本,这些脚本可以直接运行...
PL/SQL支持TABLE、VARRAY和RECORD等复合类型,用于创建嵌套表、变长数组和记录,增强了数据结构的灵活性。 总的来说,PL/SQL提供了一种强大而灵活的工具,让开发者能有效地与Oracle数据库交互,编写高效、可维护的...
1. **定义一个PL/SQL表类型**:这通常通过定义一个表类型来完成,该类型基于`table of`或`varray`关键字。 ```sql type my_text_table_type is table of varchar2(200) index by binary_integer; ``` 2. **...
- **集合**:PL/SQL提供了多种集合类型,如TABLE和VARRAY,用于存储多个同类型的数据项。 #### 八、过程与函数 PL/SQL支持创建自定义的过程和函数,可以在数据库中封装复杂数字逻辑,提高代码的重用性和维护性。 #...
### PL/SQL 用户指南与参考知识点详述 #### 第一章 PL/SQL一览 - **理解PL/SQL的主要特性** - **示例程序解析**: - **变量声明**:`qty_on_hand NUMBER(5);` —— 声明了一个名为`qty_on_hand`的变量,类型为`...
6. **复合类型**:PL/SQL支持TABLE、VARRAY和RECORD等复合数据类型,用于创建嵌套表、变长数组和自定义记录类型,使得数据结构更为灵活。 7. **子程序**:PL/SQL允许定义函数和过程,它们可以封装可重用的逻辑。子...
--声明嵌套表变量 嵌套表必须初始化 var1 mytype:=new mytype('a','b','c') begin var1.extend(2);--在数组后加了两个空间 var1(1):='a'; var1(6):='a';--超出空间 end; 可变数组的代码 declare --定义可变数组...
本文将详细介绍PL/SQL中的三种主要集合类型:Index_by表、嵌套表和VARRAY,并讨论如何在实际应用中使用这些集合。 #### 二、集合类型 ##### 1. Index_by表(联合数组) **定义** Index_by表是一种特殊的PL/SQL...