• 2022年10月21日数据库实验内容


    1.导入学生表

    set serveroutput on;--设置显示结果

    $imp system/test tables=(xs,kc,xs_kc)file=d:\oracle_daoru\xskc.dmp ignore=y;

    导入成功:

    2.块结构异常处理,主要是两个异常处理函数

    declare

    v_name varchar2(10);

    v_job varchar2(10);

     

    begin

     v_name:='100';

     v_job:='20';

    dbms_output.put_line(v_name||' '||v_job);

    exception

      when others then

        dbms_output.put_line(sqlcode||' '||sqlerrm);

    end;

    /

    结果显示:

     

    3.select into的三种情况

    --3.1.查到7521这个人

    declare

    v_name varchar2(10);

    v_job varchar2(10);

    begin

      select ename,job into v_name,v_job from scott.emp where empno='7521';

    dbms_output.put_line(v_name||' '||v_job);

    exception

      when others then

        dbms_output.put_line(sqlcode||' '||sqlerrm);

    end;

    /

     

    --3.2.查不到75211这个人

    declare

    v_name varchar2(10);

    v_job varchar2(10);

    begin

      select ename,job into v_name,v_job from scott.emp where empno='75211';

    dbms_output.put_line(v_name||' '||v_job);

    exception

      when others then

        dbms_output.put_line(sqlcode||' '||sqlerrm);

    end;

    /

     

    --3.3.不加where查了多条数据,异常

    declare

    v_name varchar2(10);

    v_job varchar2(10);

    begin

      select ename,job into v_name,v_job from scott.emp ;

    dbms_output.put_line(v_name||' '||v_job);

    exception

      when others then

        dbms_output.put_line(sqlcode||' '||sqlerrm);

    end;

    /

    4.select into 的扩展,求人数

    declare

    v_num int;

    begin

      select count(*) into v_num from scott.emp;

      dbms_output.put_line('这个表数量是'||v_num);

    exception

      when others then

        dbms_output.put_line(sqlcode||' '||sqlerrm);

    end;

    /

    5.举例%type%rowtype的区别

    5.1.%type要求精确到列,且输出的时候可以直接输出变量

    5.2.%rowtype要求精确到表,且输出的时候必须要用点把属性分开输出。

    2个栗子

    5.1

    declare

    v_name scott.emp.ename%type;--v_name属性精确到emp表的列

    begin

      select ename  into v_name  from scott.emp where empno='7521';

      dbms_output.put_line('工号是7521的人姓名是'||v_name);--输出直接输出即可

    exception

      when others then

        dbms_output.put_line(sqlcode||' '||sqlerrm);

    end;

    /

    结果输出:

     

    5.2

    declare

    v_emp scott.emp%rowtype;--v_emp属性精确到表,相当于临时表

    begin

      select *  into v_emp  from scott.emp where empno='7521';

      --输出分开输出

      dbms_output.put_line('工号是'||v_emp.empno||'的人姓名是'||v_emp.ename||',他的工作是'||v_emp.job);

    exception

      when others then

        dbms_output.put_line(sqlcode||' '||sqlerrm);

    end;

    /

    输出结果:

     

    6.模拟merge的操作实现

    declare

    --声明变量

    v_xm varchar2(8):='ikun';

    v_zym varchar2(10):='练习生';

    v_zxf number(2):=25;

    begin

      --找得到更新

      update system.xs set zxf=v_zxf where xm=v_xm;

      --找不到插入

      if SQL %NOTFOUND then

        dbms_output.put_line('没有这个同学需要插入这个同学。');

        insert into system.xs(xh,xm,zym,zxf) values ('007',v_xm,v_zym,v_zxf);

        end if;

    end;

    /

    结果显示:

    查询结果:

     

    Ikun同学已经插入;

  • 相关阅读:
    JS实现关闭网页广告弹窗特效
    用HTML+CSS做一个漂亮简单的音乐网站
    【机器学习】2. 支持向量机
    实时语音通讯技术:多人通话和语音识别
    华为数通方向HCIP-DataCom H12-821题库(多选题:241-260)
    47. 全排列 II
    【AI 编程助手】DevChat 解析:深入了解、快速配置与实际操作案例的完整指南
    老生常谈:学习Java自学好还是报培训班?
    Go基础11-理解Go语言的包导入
    adb 查找应用包名,应用 Activity 等信息
  • 原文地址:https://blog.csdn.net/m0_61749866/article/details/127439428