• PL


    1使用PL/SQL块查询表的信息

    (1)查询编号为7369的员工名称和职务信息。

    set serveroutput on

    desc emp

    declare v_ename varchar2(10);

      v_job varchar2(9);

      begin

       select ename,job into v_ename,v_job from emp where empno=&empno;

       dbms_output.put_line(v_ename||','||v_job);

       end;

       /

    Enter value for empno: 7369

    old   4: select ename,job into v_ename,v_job from emp where empno=&empno;

    new   4: select ename,job into v_ename,v_job from emp where empno=7369;

    SMITH,CLERK

     

    (2)使用%type类型的变量输出表中编号为7369的员工名称和职务信息。

    declare v_ename emp.ename %type;

    v_job emp.job %type;

    begin

    select ename,job into v_ename ,v_job from emp where empno=&empno;

    dbms_output.put_line(v_ename||','||v_job);

    end;

    /

    Enter value for empno: 7369

    old   4: select ename,job into v_ename,v_job from emp where empno=&empno;

    new   4: select ename,job into v_ename,v_job from emp where empno=7369;

    SMITH,CLERK

     

    (3)声明一个记录类型emp_type,使用该类型的变量存储emp表中的一条记录信息并输出这条记录。

    declare type emp_type is record(v_ename emp.ename %type,v_job emp.job %type,v_mgr emp.mgr %type,v_hiredate emp.hiredate %type);

      v_emp_record emp_type;

      begin

      select ename,job,mgr,hiredate into v_emp_record from emp where empno=&empno; dbms_output.put_line(v_emp_record.v_ename||','||v_emp_record.v_job||','||v_emp_record.v_mgr||','||v_emp_record.v_hiredate);

      end;

      7  /

    Enter value for empno: 7369

    old   4: select ename,job,mgr,hiredate into v_emp_record from emp where empno=&empno;

    new   4: select ename,job,mgr,hiredate into v_emp_record from emp where empno=7369;

    SMITH,CLERK,7902,17-DEC-80

     

    (4)声明一个%rowtype类型的变量rowVar_emp,使用该变量存储emp表中的一行数据。

    declare rowVar_emp emp %rowtype;

    begin

    select * into rowVar_emp from emp where empno=&empno;

    dbms_output.put_line(rowVar_emp.ename||rowVar_emp.job||rowVar_emp.mgr||rowVar_emp.hiredate);

    end;

    /

     

    2设计条件控制语句来实现表中分支情况的查询

    (1)根据条件控制结构实现以下功能:如果表中存在职务为“ANALYST”或“PRESIDENT”的员工,那么输出“有满足条件的员工”信息,否则输出“没有满足条件的员工”。

    declare v_num number(2);

    begin

    select count(*) into v_num from scott.emp where job='ANALYST' or job='PRESIDENT';

    if v_num!=0 then

    dbms_output.put_line('employee');

    else

    dbms_output.put_line('noemployee');

    end if;

    end;

       (2)编程实现以下功能:使用CASE语句更新相应部门的员工补贴,部门10补贴100,部门20补贴80,部门30补贴80,部门40补贴60。

    declare v_deptno emp.deptno %type;

    begin

    case

    when v_deptno=10 then

    update emp set comm= nvl(comm,0)+100;

    when v_deptno=20 then

    update emp set comm= nvl(comm,0)+80;

    when v_deptno=30 then

    update emp set comm= nvl(comm,0)+80;

    else

    update emp set comm= nvl(comm,0)+60;

    end case;

    end;

    /

     

    declare cursor crs_commupdate is select * from emp for update of comm;

    r_commupdatet crs_commupdate %rowtype;

    updatecomm emp.comm %type;

    begin

    for r_commupdatet in crs_commupdate loop

    case

    when r_commupdatet.deptno=10

    then updatecomm:=nvl(r_commupdatet.comm,0)+100;

    when r_commupdatet.deptno=20

    then updatecomm:=nvl(r_commupdatet.comm,0)+80;

    when r_commupdatet.deptno=30

    then updatecomm:=nvl(r_commupdatet.comm,0)+80;

    when r_commupdatet.deptno=40

    then updatecomm:=nvl(r_commupdatet.comm,0)+60;

    end case;

    update emp  set comm=updatecomm where current of crs_commupdate;

    end loop;

    end;

    /

     

    3 设计循环语句连续向表中插入多条记录

    分别使用三种不同的循环while loop循环,基本loop循环,for loop循环实现连续向emp表中插入10个记录。

    declare v_count number(2):=1;

    begin

    while v_count<=10 loop

    insert into scott.emp(empno) values(v_count);

    v_count:=v_count+1;

    end loop;

    commit;

    end;

    /

     

    declare v_count number(2):=1;

    begin

    loop

    insert into scott.emp(empno) values(v_count);

    exit when v_count=10;

    v_count:=v_count+1;

    end loop;

    commit;

    end;

    /

     

    begin

    for v_count in 1..10

    loop

    insert into scott.emp(empno) values(v_count);

    end loop;

    commit;

    end;

    /

  • 相关阅读:
    jsp生成xml文件示例
    jsp分页显示
    Spring AOP学习笔记
    让leeon不再眷念马桶——书评《精通正则表达式》
    用JSP实现上传文件的两种方法
    oracle sql性能优化
    Iron Speed Designer 4.2.2学习
    再议《JavaScript代码优化一例》
    有关《大道至简》的几点讨论~
    有源则至清——我读《移山之道》
  • 原文地址:https://www.cnblogs.com/Azaimer/p/11093029.html
Copyright © 2020-2023  润新知