PLSQLPLSQL中复合数据类型
Posted David Wu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PLSQLPLSQL中复合数据类型相关的知识,希望对你有一定的参考价值。
1,常见的操作数据库的技术有那些
jdbc 使用java 访问数据库的技术
PLSQL (procedure 过程化sql) 在数据库内部操作数据的技术
proc/c++ c 和 c++ 访问数据库的技术
ODBC 微软提供访问数据库的技术
OCI oracle 底层的连接接口
2,Oracle中的复合数据类型
Oracle中的复合数据类型record,table,cursor
2.1 record类型
2.1.1 语法
/*定义一个record类型*/ type record类型名称 is record( 属性 数据类型, 属性 数据类型 ... ); /*使用record类型名称定义一个record变量*/ record变量名 record类型名称
也可以使用表的字段来定义,
/*使用表的字段类型定义一个record类型*/ type record类型名称 is record( 属性 表名.属性名%type, 属性 表名.属性名%type ... ); /*使用record类型名称定义一个record变量*/ record变量名 record类型名称
2.1.2 示例
set serveroutput on; declare type emptype is record( id number, name varchar2(5) ); var_emp emptype; begin var_emp.id:=1; var_emp.name:=‘jame‘; dbms_output.put_line(var_emp.id); end; /
2.2 table类型
2.2.1 语法
/*定义一个table类型*/ type table类型名 is table of 元素类型名 index by binary_integer; /*定义一个table变量*/ 变量名 table类型名;
访问数据的方式,
table变量(下标):=值;
2.2.2 示例
declare type numstype is table of number index by binary_integer; var_nums numstype; begin var_nums(0):=9; var_nums(1):=5; var_nums(2):=2; var_nums(3):=7; var_nums(4):=0; dbms_output.put_line(var_nums(3));/*打印下标为3的元素*/ end;
table中的数据也可以使用迭代的思想来操作
下标不连续时 遍历table类型的变量
迭代思想:
变量名.first() 获取第一个元素对应的下标 (元素对应的最小下标)
变量名.next(n) 根据一个元素的下标n 得到下一个元素对应的下标
变量名.last() 获取最后一个元素对应的下标
例如:
set serveroutput on; declare type numstype is table of number index by binary_integer; var_nums numstype; var_index binary_integer:=0; begin var_nums(0):=9; var_nums(1):=5; var_nums(-12):=2; var_nums(3):=7; var_nums(4):=0; -- var_nums.count(); var_index := var_nums.first(); loop dbms_output.put_line(var_nums(var_index)); var_index:=var_nums.next(var_index); if var_index = var_nums.last() then dbms_output.put_line(var_nums(var_index)); exit; end if; end loop; end; /
2.3 cursor类型
2.3.1 语法
/*声明游标*/ cursor 游标名 is select语句; /*打开游标*/ open 游标名; /*提取数据,将结果存储到变量中,一般都是record类型*/ fetch 游标名 into 变量; /*关闭游标*/ close 游标名
2.3.2 示例
declare /*使用s_emp创建一个游标变量*/ cursor empcursor is select id,first_name name,salary from s_emp; /*创建一个record类型*/ type emptype is record( id s_emp.id%type, name s_emp.first_name%type, salary s_emp.salary%type ); /*创建一个record变量*/ var_emp emptype; begin /*打开游标*/ open empcursor; /*将游标的第一条值存储到var_emp中*/ fetch empcursor into var_emp; dbms_output.put_line(var_emp.id||‘:‘||var_emp.name||‘:‘||var_emp.salary); /*将游标的第一条值存储到var_emp中*/ fetch empcursor into var_emp; dbms_output.put_line(var_emp.id||‘:‘||var_emp.name||‘:‘||var_emp.salary); /*关闭游标*/ close empcursor; end; /
以上是关于PLSQLPLSQL中复合数据类型的主要内容,如果未能解决你的问题,请参考以下文章