zoukankan      html  css  js  c++  java
  • 2018.5.24 Oracle下的sqlplus编程 块结构

    1.语句结构模板

    declare --声明
    begin
           dbms_output.put_line('Legend Hello world');
    end;
    

    2.变量使用 & 是输入符号

    declare
           c_name constant varchar2(20) :='Legend';
           v_num number(3) :='I am';
    begin
           dbms_output.put_line(v_num ||c_name || &n);
    end;
    

    3.rowtype的运用

    declare
      v_dept dept%rowtype;     
    begin
           select * into v_dept from dept where deptno=&n;
           dbms_output.put_line('部门编号:' || v_dept.DEPTNO ||'部门名称:'|| v_dept.DNAME ||'部门位置' || v_dept.LOC);
    end;
    

    4.record的使用

    declare 
    type type_emp_dept is record(
         v_ename emp.ename%type,
         v_sal emp.sal%type,
         v_dname dept.dname%type 
    );
    
    v_record type_emp_dept;
    
    begin 
             select e.ename,e.sal,d.dname into v_record from emp e,dept d where d.deptno = e.deptno and e.empno=&n;
             dbms_output.put_line('员工姓名:'|| v_record.v_ename ||'员工工资:' || v_record.v_sal  ||'部门名称:'|| v_record.v_dname);   
    end;
    

    5.作业练习

    /*
    提示:获得键盘输入操作,可使用 empno=&名称
    */

    1、使用块结构输出:学校:XXX学号:XXX,姓名:XXX,性别:XXX.

    declare 
       v_school varchar2(20) :='桂林理工大学';
       v_sid number(20) :=01;
       v_sname varchar2(30) :='Legend';
       v_sex varchar2(5) :='男';
    begin 
       dbms_output.put_line('学校:' ||v_school || '学号:' || v_sid || '姓名:'|| v_sname ||'性别:' || v_sex);
    end;
    

    2、输入员工号,显示员工姓名、工资(使用%type完成)。

    declare 
       v_ename emp.ename%type;
       v_sal emp.sal%type;
    begin
       select ename,sal into v_ename,v_sal from emp where empno=&n; 
       dbms_output.put_line('姓名:'|| v_ename ||'工资:' || v_sal);
    end;
    

    3、输入员工号,显示员工姓名、工资(使用%rowtype完成)。

    declare 
        v_emp emp%rowtype;
    begin 
        select ename,sal into v_emp.ename,v_emp.sal from emp where empno=&n;
        dbms_output.put_line('姓名:'||v_emp.ename||'工资:'||v_emp.sal);
    end;
    

    4、输入员工姓名,显示员工编号、工资、及工作(使用record完成)

    declare 
        type type_emp is record(
             v_empno emp.empno%type,
             v_sal emp.sal%type,
             v_job emp.job%type
        );
        v_record type_emp;
    begin
        select empno,sal,job into v_record from emp where ename='&n';
        dbms_output.put_line('员工编号:'||v_record.v_empno || '工资:'||v_record.v_sal||'工作:'||v_record.v_job);
    end;
    

    5、输入员工号,显示雇员姓名、工资、个人所得税(税率为0.03)为例(使用record、%type完成).

    declare 
        type type_emp is record(
             v_ename emp.ename%type,
             v_sal emp.sal%type,
             v_money emp.sal%type
        );
        v_record type_emp;
    begin 
        select ename,sal,sal-sal*0.03 into v_record from emp where empno=&n;
        dbms_output.put_line('姓名'||v_record.v_ename ||'工资'|| v_record.v_sal || '个人所得税'||v_record.v_money);
    end;
    

    6、输出最高工资员工的名字,工作岗位。

    declare 
        v_name emp.ename%type;
        v_job emp.job%type;
    begin 
        select ename,job into v_name,v_job from emp where sal=(select max(sal) from emp);
        dbms_output.put_line('员工的名字'||v_name||'工作岗位'||v_job);
    end;
    

    7、输出员工中最高工资和最低工资

    declare 
        v_max number(20);
        v_min number(20); 
    begin 
        select max(sal),min(sal) into v_max,v_min from emp;
        dbms_output.put_line('最高工资:'|| v_max ||'最低工资:' || v_min);
    end;
    

    8、输入员工的编号,显示员工的姓名,部门名称,工资及工资的级别

    declare
         type type_emp_dept_salgrade is record(
              v_ename emp.ename%type,
              v_dname dept.dname%type,
              v_sal emp.sal%type,
              v_grade salgrade.grade%type
         );
         v_record type_emp_dept_salgrade;
    begin 
         select e.ename,d.dname,e.sal,s.grade into v_record from emp e ,salgrade s,dept d  where e.deptno=d.deptno and e.sal between s.lowsal and s.hisal
         and e.empno=&n;
         dbms_output.put_line('员工姓名:' || v_record.v_ename   || '部门名称:' || v_record.v_dname  || '员工工资 : ' || v_record.v_sal ||'工资级别 : ' || v_record.v_grade);
    end;
    

    2.第二个中方法不显示会报错

    declare
          v_name emp.ename%type;
          v_job dept.dname%type;
          v_sal emp.sal%type;
          v_grade salgrade.grade%type;
    begin
           select e.ename,d.dname,e.sal,s.grade into v_name,v_job,v_sal,v_grade from emp e,dept d,salgrade s where empno=&no 
           and e.deptno = d.deptno 
           and e.sal between s.losal and s.hisal;
           dbms_output.put_line('员工号:'||v_name ||'工作:'||v_job||'工资:'||v_sal|| '工资级别: '||v_grade);
    end;
    
  • 相关阅读:
    HDU 3848 CC On The Tree 树形DP
    编程求取直线一般式表达式,两直线交点
    向外国学者所要论文源代码--英语模版
    找出该树中第二小的值--思路及算法实现
    不使用额外空间交换2个数据的源代码
    华为2018软件岗笔试题解题思路和源代码分享
    华为笔试题--LISP括号匹配 解析及源码实现
    Linux 快捷键汇总(偏基础)
    快速排序算法思路分析和C++源代码(递归和非递归)
    Python读取SQLite文件数据
  • 原文地址:https://www.cnblogs.com/qichunlin/p/9080943.html
Copyright © 2011-2022 走看看