匿名块的四个类型(type rowtype record table)


Oracle PL/SQL块 匿名块的四个类型 type rowtype record table



declare
-- 变量声明部分 v_ename 类型参考表emp表的ename类型 v_ename emp.ename%type; v_sal emp.sal%type; begin -- 业务逻辑执行部分 select ename,sal into v_ename,v_sal from emp where empno=&请输入员工编号; -- 把员工姓名打印到控制台 dbms_output.put_line('员工姓名:'||v_ename||',基本工资:'||v_sal); exception -- 异常处理部分 when no_data_found then dbms_output.put_line('你输入的员工编号不存在'); end;
declare
-- 变量声明部分   v_ename  类型参考表emp表的ename类型
   v_emp emp%rowtype;
begin
-- 业务逻辑执行部分
   select * into v_emp from emp where empno=&请输入员工编号;
-- 把员工姓名打印到控制台
   dbms_output.put_line('员工编号:'||v_emp.empno||',员工姓名:'||v_emp.ename||',基本工资:'||v_emp.sal||',奖金:'||v_emp.comm||',雇用日期:'||v_emp.hiredate);
exception
-- 异常处理部分
   when no_data_found then
   dbms_output.put_line('你输入的员工编号不存在');
end;
declare
  type emp_record_type is record(
     ename  emp.ename%type,
     sal emp.sal%type,
     comm emp.comm%type,
     total emp.sal%type
  );
  
  v_emp emp_record_type;
begin 
  select ename,sal,comm,sal+nvl(comm,0) into v_emp from emp where empno=&no;
  
  dbms_output.put_line('员工姓名:'||v_emp.ename||',基本工资:'||v_emp.sal||
            ',奖金:'||v_emp.comm||',总工资:'||v_emp.total);
end;
declare
-- 声明table类型  is table of 后可以跟行类型,也可以是记录类型
  type emp_table_type is table of emp%rowtype
  index by binary_integer;
  
  v_emp emp_table_type;
begin 
  select * into v_emp(1) from emp where empno=7369;
  
  select * into v_emp(2) from emp where empno=7499;
  
  dbms_output.put_line('员工姓名:'||v_emp(1).ename||',基本工资:'||v_emp(1).sal||';');
  
  dbms_output.put_line('员工姓名:'||v_emp(2).ename||',基本工资:'||v_emp(2).sal||';');
end;

猜你喜欢

转载自www.cnblogs.com/zhangmenghui/p/10828914.html