ZTESOracle复合数据类新第十二讲.pptVIP

  • 0
  • 0
  • 约7.69千字
  • 约 23页
  • 2017-05-28 发布于上海
  • 举报
ZTESOracle复合数据类新第十二讲ppt课件

复合数据类型 目标 在本课中您将学会以下内容: 创建用户自定义的PL/SQL记录 使用%ROWTYPE属性创建记录类型 创建PL/SQL表 创建PL/SQL记录表 创建嵌套表 联合数组 理解记录、表和记录表之间的差异 复合数据类型 复合数据类型 PL/SQL记录类型 PL/SQL表类型 PL/SQL记录表类型 联合数组 复合数据类型包含内部数据结构 可能被重用 PL/SQL记录类型 必须包含一个或多个由标量类型、记录类型或PL/SQL表类型组成的域 与表中的记录不相似 将一组域看成一个逻辑单元 可以很方便地从表中提取一行数据进行处理 创建PL/SQL记录 语法 field_declaration表示: TYPE type_name IS RECORD (field_declaration[, field_declaration]…); identifier type_name; field_name {field_type | variable%TYPE | table.column%TYPE | table%ROWTYPE} [[NOT NULL] {:= | DEFAULT} expr] 创建PL/SQL记录 定义一个记录类型,用于存储员工的姓名,职位和工资 例如: ... TYPE emp_record_type IS RECORD (ename VARCHAR2(10), job VARCHAR2(9), sal NUMBER(7,2)); emp_record emp_record_type; ... PL/SQL记录结构 Field1 (datatype) Field2 (datatype) Field3 (datatype) empno number(4) ename varchar2(10) job varchar2(9) Field1 (datatype) Field2 (datatype) Field3 (datatype) 例如 %ROWTYPE属性 根据数据库表或视图的行定义数据类型 在%ROWTYPE前加上数据库表的名称 记录类型中的域与表或视图中的列的名称和数据类型一一对应 使用%ROWTYPE的优点 数据库表列的数量和数据类型可能不知道,也不需要知道 数据库表列的数量和数据类型可能会发生变化 当用SELECT语句从表中提取一行时非常有用,如从游标中获取数据 %ROWTYPE属性 举例 定义一个变量,用于存放DEPT表中的行 定义一个变量,用于存放EMP表中的行 dept_record dept%ROWTYPE; emp_record emp%ROWTYPE; 使用%ROWTYPE插入行 ... DEFINE employee_number = 124 DECLARE emp_rec retired_emps%ROWTYPE; BEGIN SELECT employee_id, last_name, job_id, manager_id, hire_date, hire_date, salary, commission_pct, department_id INTO emp_rec FROM employees WHERE employee_id = employee_number; INSERT INTO retired_emps VALUES emp_rec; END; / SELECT * FROM retired_emps; 使用%ROWTYPE修改表中的行 SET SERVEROUTPUT ON SET VERIFY OFF DEFINE employee_number = 124 DECLARE emp_rec retired_emps%ROWTYPE; BEGIN SELECT * INTO emp_rec FROM retired_emps; emp_rec.leavedate:=SYSDATE; UPDATE retired_emps SET ROW = emp_rec WHERE empno=employee_number; END; / SELECT * FROM retired_emps; PL/SQL表类型 由两部分组成: 由二进制整型数构成的主键 由标量类型或记录类型构成的列 PL/SQL表中的数据可以动态增长,其数量是不受限制的 创建PL/SQL表 语法 TYPE type_name IS TABLE OF {column_

文档评论(0)

1亿VIP精品文档

相关文档