zoukankan      html  css  js  c++  java
  • 匿名块的四个类型(type rowtype record table)


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


    ---- type (列类型)  %type类型是指声明变量的时候,参考某个表的某个列的类型
    ---- rowtype (行类型) %rowtype参数某个表的类型,%rowtype中可以存储多个数据,具体可存多少个和表的字段数一样。
    ---- record类型(记录类型) record可以理解为可以自定义的行类型,record类型在使用之前必须声明该类型。
    ---- table类型 (表类型) 无论是行类型还是记录类型只能存储一行数据,如果要存储多行数据,需要用到table类型。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;
  • 相关阅读:
    java.lang.NoSuchMethodError:antlr.collections.AST.getLine() I
    T7 java Web day01 标签HTML
    T6 s1 day19
    T5 s5 Day18
    T5 s4 Day 17
    T5 s3 day16
    T5 s2 Day 15
    T5 s1 day14
    T4 S03 day 12
    T4 S01 day1
  • 原文地址:https://www.cnblogs.com/zhangmenghui/p/10828914.html
Copyright © 2011-2022 走看看