您现在的位置: 万盛学电脑网 >> 程序编程 >> 数据库 >> oracle教程 >> 正文

PL/SQL定义部分之二复合数据类型

作者:佚名    责任编辑:admin    更新时间:2022-06-22

复合类型

复合类型可以存储多个值,包括记录和集合。集合是一维的,但是可以在集合中放入其它集合,变成多维集合。集合又分为索引表、嵌套表和变长数组三种。要使用集合,我们首先要创建集合类型,然后声明该类型的变量。我们可以在任何PL/SQL块、子程序或包的声明部分使用TABLE和VARRAY关键字来声明集合类型。集合的作用域和同其他类型变量一样,在一个块或子程序中,当程序进入块或子程序时有效,退出时失效。在包中,集合在我们第一次引用包的时候有效,直至会话终止时才失效。

一、记录

记录可以包括多个成员,从而可以保存多个值。记录中的成员的数据类型可以不同。记录在使用时必须先声明记录类型,然后定义记录变量,最后才能在PL/SQL中使用。

示例1:

DECLARE
TYPE MyRecord IS RECORD(
name VARCHAR2(10),
age  SMALLINT
);
mr MyRecord;
BEGIN
mr.name:='zhangsan';
mr.age:=20;
DBMS_OUTPUT.PUT_LINE('姓名:'||mr.name||'    年龄:'||mr.age);
END;

示例2: DECLARE
TYPE MyRecord IS RECORD(
no    NUMBER(2),
name  VARCHAR2(14),
city  scott.dept.loc%TYPE
);
deptRecord MyRecord ;
BEGIN
--SELECT 语句后列的数目与记录中的变量数目相同
SELECT deptno,dname,loc into deptRecord FROM DEPT WHERE DEPTNO=30;
DBMS_OUTPUT.PUT_LINE(deptRecord.no||':'||deptRecord.name||':'||deptRecord.city);
END;

示例3:

DECLARE
TYPE MyRecord IS RECORD(
no    NUMBER(2),
name  VARCHAR2(14),
city  scott.dept.loc%TYPE
);
deptRecord MyRecord;
BEGIN
--SELECT 语句后列的数目少于记录中的变量数目
SELECT dname,loc INTO deptRecord.name,deptRecord.city FROM DEPT WHERE DEPTNO=30;
deptRecord.no:=30;
DBMS_OUTPUT.PUT_LINE(deptRecord.no||':'||deptRecord.name||':'||deptRecord.city);
END;

示例4:

DECLARE

--特殊定义记录方式,记录中变量的类型与dept表行的类型相同

deptRecord dept%ROWTYPE;
BEGIN
SELECT * INTO deptRecord FROM DEPT WHERE DEPTNO=30;
DBMS_OUTPUT.PUT_LINE(deptRecord.deptNo||':'||deptRecord.dname||':'||deptRecord.loc);
END;

  • 共4页:
  • 上一页
  • 1
  • 2
  • 3
  • 4
  • 下一页