变量定义
变量定义
处理单行多列的情况
定义记录变量:使用%rowtype
自定义记录类型
type emp_record_type is record( name emp.ename%type, salary emp.sal%type, dno emp.deptno%type ); |
通过自定义记录类型查询表数据
declare --自定义记录类型 type emp_record_type is record( name emp.ename%type, salary emp.sal%type, dno emp.deptno%type ); --声明一个自定义类型的变量 emp_record emp_record_type; begin select ename,sal,deptno into emp_record from emp where empno = 7788; dbms_output.put_line(emp_record.name); select ename,sal into emp_record.name,emp_record.salary from emp where empno = 7788; dbms_output.put_line(emp_record.name); end; |
注:在select into语句中直接使用记录变量时,选择列表中的列和表达式的顺序,个数、类型必须与记录成员的顺序、个数、类型完全匹配。
处理多行单列的数据
declare --自定义类型 type ename_table_type is table of emp.ename%type;
--声明一个自定义类型的变量 ename_table ename_table_type; begin select ename bulk collect into ename_table from emp; for i in 1 .. (ename_table.count) loop dbms_output.put_line(ename_table(i)); end loop; end; |
删除记录并返回删除记录中的ename字段信息
declare --自定义类型 type ename_table_type is table of emp.ename%type;
--声明一个自定义类型的变量 ename_table ename_table_type; begin delete from emp where deptno is null returning ename bulk collect into ename_table; for i in 1 .. (ename_table.count) loop dbms_output.put_line(ename_table(i)); end loop; end; |
处理多行多列数据
使用select .. bulk collect into语句处理多行多列数据
declare --自定义类型 type emp_table_type is table of emp%rowtype;
--声明一个自定义类型的变量 emp_table emp_table_type; begin select * bulk collect into emp_table from emp; for i in 1 .. (emp_table.count) loop dbms_output.put_line('雇员编号:' || emp_table(i).empno || ' 雇员名称:' ||emp_table(i).ename); end loop; end; |