oracle PL\SQL块和复合类型
2018-12-04 PLSQL程序块由三个部分组成:声明部分、执行部分、异常处理部分。 其结构如下: declare /*声明部分:说明要用到得变量,类型及游标,以及局部存储过程和函数*/ /*变量的定义和系统保留字要区分开(sql server 中可用@ PLSQL不能用@)*/ begin /*执行部分:过程及SQL语句*/ /*必须有*/ exception /*异常处理部分:错误处理*/ end; PL/SQL中除了一些常见的变量类型外,还有复合类型 复合类型分为记录和表 记录:由单行多列的标量构成的复合结构。可以看做是一种用户自定义数据类型。将一个或多个标量封装成一个对象进行操作。是一种临时复合对象类型。 语法: type record_type is record( Field1 type1 [not null] [:= exp1], Field1 type1 [not null] [:= exp2], ... Fieldn typen [not null] [:= expn]); 其中可以用%type和%rowtype 来为声明的变量快速指明类型。 %type——使其对应的变量类型与已经定义好的某个数据变量的类型相同 %rowtype——返回一个记录类型,其数据类型和数据库表的数据结构相同 表:使用记录类型变量只能保存一行数据,这限制了select返回行数,如果SELECT语句返回多行就会错。Oracle提供了另外一种自定义类型,也就是 ? ? ? ? ? ? ? ?? 表类型,它是对记录类型的扩展,允许处理多行数据,类似于表。 语法: type type_name is table of table%rowtype? [index by binary_integer]; 例子1:
结果:
在这个例子中注意:声明部分类似JAVA中的类——先定义一个类,然后定义一个它的对象 执行部分:select —into—from—where 从表中选择一个合适的记录,然后赋值给into后的记录类型变量 例子2:
结果:
在例子2中,C_course%rowtype——说明表类型变量course_table_type的数据类型和C_course表的数据结构相同 ? index by binary_integer——指定系统创建一个主键索引,用于引用表类型变量中的特定行 /*有这个后面的my_table(1)和my_table(2)才有意义*/ 创建表类型变量的意义就如上面提到的一样,在于处理多行数据。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |