另计:chr(10)
chr(13)
一个是换行,一个是回车
正文:
程序演示:
定义一个名为emp_recode的记录数据类型,并从emp中查出工号为7839的员工的所有信息放到此记录中最后打印出来
declare
type emp_record is record(
record_empno emp.empno%type,
record_ename emp.ename%type,
record_job emp.job%type,
record_mgr emp.mgr%type,
record_date emp.hiredate%type,
record_sal emp.sal%type,
record_comm emp.comm%type,
record_deptno emp.deptno%type
);
my_record emp_record;
begin
select * into my_record from emp where empno=7839;
dbms_output.put_line(my_record.record_empno);
dbms_output.put_line(my_record.record_ename); //注意,此处只能一个一个的去读。而且record中的变量必须与emp表中的变量相对应
end;
程序演示:
declare
type my_table is table of emp%rowtype index by binary_integer;
myfirst_table my_table;
begin
select * into myfirst_table(1) from emp where empno=7839;
dbms_output.put_line(myfirst_table(1).sal);
end;
注意:之前有说过记录表类型相当于其他语言中的数组,那么使用的时候自然要指定下标,但是,不同的是它的下标可以任意指定没有限制,而且下标可以为负数
set serveroutput on;
declare
type my_table2 is table of varchar2(64) index by binary_integer;
mysecond_table my_table2;
begin
mysecond_table(1):='第一条记录';
mysecond_table(2):='第二条记录';
mysecond_table(3):='第三条记录';
mysecond_table(4):='第四条记录';
mysecond_table(5):='第五条记录';
dbms_output.put_line(mysecond_table.count);
mysecond_table.delete(1);
dbms_output.put_line(mysecond_table.count);
end;
结果:
5
4
PL/SQL procedure successfully completed
set serveroutput on;
declare
type my_table2 is table of varchar2(64) index by binary_integer;
mysecond_table my_table2;
index_num binary_integer;
begin
mysecond_table(1):='第一条记录';
mysecond_table(2):='第二条记录';
mysecond_table(3):='第三条记录';
mysecond_table(9):='第四条记录';
mysecond_table(100):='第五条记录';
index_num:= mysecond_table.first;
loop
exit when index_num is null;
dbms_output.put_line(mysecond_table(index_num));
index_num:=mysecond_table.next(index_num);
end loop;
end;
结果是:
第一条记录
第二条记录
第三条记录
第四条记录
第五条记录
PL/SQL procedure successfully completed