- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ORACLE 第七讲 记录类型与PL/SQL表 本章目标 熟练掌握不同情况下的记录类型与行级变量的使用 熟练PL/SQL表的功能及其使用 掌握批量绑定特性来简化代码 记录类型 什么是记录类型 类似于C语言中的结构体,用于处理PL/SQL程序块中单行多列数据。 为什么要用记录类型 我们曾经学过的%ROWTYPE就是一个记录类型。如果我们需要表中的某些字段而不是全部字段作为一个变量类型,此时就要自己定义一个记录类型。 在哪里用记录类型 怎样用记录类型 记录类型 声明----如JAVA中先创建类 TYPE record_type IS RECORD( my_column_name1 datatype, my_column_name2 datatype); 创建实例(记录类型)----再定义类的对象 record_name record_type; 其中: record_name为记录类型的实例 record_type为我们自定义的记录类型 我们不能操纵类型,只能操纵实例。 记录类型 举例: DECLARE TYPE emp_rec IS RECORD(eno emp.empno%TYPE, ena emp.ename%TYPE); e_row emp_rec; CURSOR emp_cur IS SELECT empno,ename FROM emp;BEGIN OPEN emp_cur; FETCH emp_cur INTO e_row; WHILE emp_cur%FOUND LOOP dbms_output.put_line(e_row.eno|| ||e_row.ena); FETCH emp_cur INTO e_row; END LOOP; CLOSE emp_cur;END; PL/SQL表 什么是PL/SQL表 在PL/SQL块中临时使用,如数组一样的对象,不能用它定义表中的字段。PLSQL表可以存储N个数据,所有数据的类型相同。键值对应,用来处理单行多列的数据。 PL/SQL表特点: 只包含一列或一个主键(一列不代表一个字段) 列可以是任何标量数据类型 不能对列或主键进行命名 PL/SQL表 主键必须是BINARY_INTEGER(二进制整型)类型----9.2之前 PL/SQL表大小无限制 为什么用PL/SQL表 在哪里用PL/SQL表 怎样用PL/SQL表 声明 TYPE table_type IS TABLE OF datatype INDEX BY BINARY_INTEGER|VARCHAR2(); PL/SQL表 创建实例 table_name table_type; 举例1: DECLARE TYPE stu_type IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER; stu stu_type;BEGIN stu(1):=Tom; stu(-2):=Mary; dbms_output.put_line(stu(1)); dbms_output.put_line(stu(-2));END; PL/SQL表 由上例可见: PL/SQL表索引下标的整数可不连续 PL/SQL表索引下标的整数可为负 但不能出现未定义的索引下标,比如说stu(5) 举例2: DECLARE TYPE student_type IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER; stu student_type; PL/SQL表 BEGIN FOR i IN 1..10 LOOP stu(i):=STUDENT||i; END LOOP; FOR i IN 1..10 LOOP dbms_output.put_line(stu(i)); END LOOP;END; 举例3: DECLARE PL/SQL表 TYPE student_type IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER;
文档评论(0)