一、PL/SQL记录
1.简单使用:
declare
type emp_record_type is record(
v_empno emp.empno%type,
v_name emp.ename%type,
v_sal emp.sal%type
);
emp_record emp_record_type;
begin
select empno, ename, sal into emp_record from emp where empno = &no;
--或者:select empno, ename into emp_record.v_empno, emp_record.v_name from emp where empno = &no;
dbms_output.put_line(emp_record.v_name || emp_record.v_sal);
end;
/
2.实用rowtype定义记录类型
declare
emp_record emp%rowtype;
begin .....
二、PL/SQL集合:(索引表(PL/SQL表)、嵌套表、变长数组(varray))
1、索引表(PL/SQL表):
无边界(元素个数没有限制),下标可以为负值
简单使用:
declare
type ename_table_type is table of emp.ename%type index by binary_integer;
ename_table ename_table_type;
begin
select ename into ename_table(-1) from emp where empno = &no;
dbms_output.put_line('雇员名:'|| ename_table(-1));
end;
/
(index 表示下标数据类型 可以是binary_integer、varchar2、pls_integer)
批量提取:
declare
type ename_table_type is table of emp.ename%type index by binary_integer;
ename_table ename_table_type;
begin
select ename bulk collect into ename_table from emp;
for i in 1..ename_table.count loop --.count表示元素个数
dbms_output.put_line(ename_table(i));
end loop;
end;
/
使用varchar2作为下标
declare
type ename_table_type is table of emp.ename%type index by varchar2(20);
ename_table ename_table_type;
begin
ename_table('北京') := 1;
ename_table('上海') := 2;
ename_table('广州') := 3;
dbms_output.put_line('第一个元素: '|| ename_table('北京'));
dbms_output.put_line('最后一个元素下标: '|| ename_table.last);
end;
/
2、嵌套表:
元素下标从1开始,元素个数没有限制,数组元素值可以是稀疏的
declare
type ename_table_type is table of emp.ename%type;
ename_table ename_table_type := ename_table_type('a','b');
begin
select ename into ename_table(2) from emp where empno = &no;
dbms_output.put_line('雇员名:'||ename_table(2));
end;
/
3、变长数组(varray):
下标从1开始,元素的个数是有限制的
declare
type ename_table_type is varray(20) of emp.ename%type;
ename_table ename_table_type := ename_table_type('aa');--必须先初始化
begin
select ename into ename_table(1) from emp where empno = &no;
dbms_output.put_line('雇员名:'||ename_table(1));
end;
/
注意:如果初始化时没有分配足够的空间,则在接下来使用时必须先ename_table.extend;或者
ename_table.extend(x)其中x的值不能超过定义时的最大值
创建类型:create type phone_type is varray(20) of varchar2(20);
4、记录表:(即是索引表和记录的乘积)
declare
type emp_table_type is table of emp%rowtype index by binary_integer;
emp_table emp_table_type;
begin
select * into emp_table(1) from emp where empno = &no;
dbms_output.put_line('雇员姓名:' ||emp_table(1).ename);
end;
/
5、多级集合:
多级索引表:
declare
--定义一维table
type a1_table_type is table of int index by binary_integer;
--二维table
type a2_table_type is table of a1_table_type index by binary_integer;
a2_table a2_table_type;
begin
a2_table(1)(1) := 11;
a2_table(1)(2) := 12;
a2_table(1)(3) := 13;
a2_table(2)(1) := 21;
a2_table(2)(2) := 22;
--显示:
for i in 1..a2_table.count loop
for j in 1..(a2_table(i).count) loop
dbms_output.put_line(a2_table(i)(j));
end loop;
end loop;
end;
/
其他多级嵌套表、多级变长数组用法是一样的;
分享到:
相关推荐
12. **复合数据类型**:了解记录类型和表类型,它们允许存储复杂的数据结构。 13. **命名块**:掌握过程和函数的编写与调用,理解参数传递的方式。包是组织PL/SQL代码的有效方式,包括包头(声明)和包体(实现)。...
《大型数据库技术》复习提纲主要涵盖了Oracle 11g数据库的多个重要方面,包括数据库的安装配置、体系结构、管理、SQL*Plus命令、SQL语句基础以及PL/SQL编程基础。以下是对这些知识点的详细说明: 1. **Oracle 11g...
2. 数据类型:Oracle支持多种数据类型,如CHAR、VARCHAR2、NUMBER、DATE、BLOB等,用于存储不同类型的数据。 3. 表的创建与管理:CREATE TABLE语句用于创建表,ALTER TABLE用于修改表结构,DROP TABLE用于删除表。...
5. **数据类型**:Oracle提供了丰富的数据类型,如CHAR、VARCHAR2、NUMBER、DATE、CLOB、BLOB等,用于存储不同类型的数据。 6. **表的设计**:在设计表时,需考虑字段的主键、外键、索引、约束等,以确保数据的一致...
3. **分区表**:Oracle的分区技术能提高大数据量查询的性能,包括范围分区、列表分区、哈希分区和复合分区。 4. **游标**:在PL/SQL中,游标用于遍历查询结果集,是处理单条记录的重要工具。 5. **性能优化**:了解...
命名的PL/SQL块类型 - **题目:** 以下哪个不属于命名的PL/SQL块? - A.程序包 - B.过程 - C.游标 - D.函数 - **解析:** 游标(Cursor)不是一个命名的PL/SQL块,它是一种用于处理查询结果集的对象,而不是一个...
- 分区:理解分区技术,包括范围、列表、哈希和复合分区,以及它们在大数据处理中的优势。 - RAC(Real Application Clusters):学习如何配置和管理Oracle集群,提供高可用性和负载均衡。 - 数据库链接:掌握...
- 数据类型:熟悉Oracle中的基本数据类型,如NUMBER、VARCHAR2、DATE、CLOB等。 - 表的创建与删除:掌握CREATE TABLE和DROP TABLE语句的用法。 - 数据约束:理解并能运用NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN ...
触发器是在特定数据库事件发生时自动执行的程序,而存储过程是预编译的SQL和PL/SQL代码集合。两者都用于实现业务逻辑,提高数据一致性。 7. **并发控制**: Oracle使用多版本并发控制(MVCC)和行级锁定来处理...
2. **数据类型**:了解Oracle支持的数据类型,如NUMBER、VARCHAR2、DATE、BOOLEAN等,以及如何适当地使用它们来创建表。 3. **数据库对象**:包括表、视图、索引、存储过程、触发器、游标、序列等。`gongsi数据库`...
2. 触发器与存储过程:学习如何编写和管理PL/SQL代码,包括触发器、存储过程、游标和异常处理。 3. 数据库安全性:涵盖用户管理、权限和角色的分配,以及如何使用审计功能来确保数据安全。 4. 复制技术:了解...
- **通用函数类型**:归纳Oracle中可用于多种数据类型的通用函数,如`NVL`, `DECODE`, `CASE`等。 - **函数特性**:分别阐述这些通用函数的特点及应用场景。 - **综合应用**:结合多个通用函数构建复杂的SQL表达式。...
1. **基础语法**:包括类、对象、接口、继承、多态等面向对象的基本概念,以及变量、数据类型、运算符、流程控制语句等。 2. **集合框架**:如ArrayList、LinkedList、HashMap、HashSet等容器的使用,以及它们之间...