Oracle数据库PL/SQL块

Oracle数据库练习——习题

1: 写一个PL/SQL 块,实现任意两个员工的工资互换。
提示:可以定义两个变量,并从键盘上输入两个员工的编号,如果两个编号相同,则抛出一个自定义异常,否则进行工资的互换

declare
  staff exception;
  staff_a emp.empno%type:='&请输入员工a的编号';
  staff_b emp.empno%type:='&请输入员工b的编号';
  sal_a emp.sal%type;
  sal_b emp.sal%type;
  begin
    select sal into sal_a from emp where empno=staff_a;
    select sal into sal_b from emp where empno=staff_b;
  if staff_a=staff_b then
    raise staff;
    else 
      update emp set sal=sal_a where empno=staff_b;
      update emp set sal=sal_b where empno=staff_a;
      end if;
      exception
      when staff then
      dbms_output.put_line('错误,不能和自己互换');
      end;
  

2: 写一个PL/SQL 块,将某个以指定字母开头的姓名员工的工资赋给变量,然后输出。
提示:从键盘上输入一个字符串变量的值,如果该字符串的长度超过1,则引发一个自定义异常,否则用该字符对员工表的姓名字段进行模糊查询。如输入’S’,则将所有姓名以S开头的员工的平均工资赋到某个变量中。然后输出

declare
   name_na number;
   name varchar(32):='&name';
   begin
     select avg(sal) into name_na from emp where ename like name||'%';
     if length(name)>1 then
       raise_application_error(-20001,'输入的字符串过长');
       else 
       dbms_output.put_line(name_na);
       end if;
       end;

3 :写一个PL/SQL 块,输出 NxN 乘法表。
提示:从键盘上输入一个数字N,如输入6,则输出乘法表直到6乘6;如输入9,则输出乘法表直到9乘9。如果输入的是0或负数,则引发一个自定义异常。注意输出的格式要尽可能工整

declare
   m number;
   begin
   m:='&m';
   if m<1 then
   raise_application_error(-20002,'哈哈哈,不对哦');
   else 
     for i in 1..m loop
       for j in 1..i loop
         dbms_output.put(i||'*'||j||'='||(i*j)||' ');
       end loop;
     dbms_output.put_line('');
     end loop;
     end if;
     end;

发布了27 篇原创文章 · 获赞 45 · 访问量 2652

猜你喜欢

转载自blog.csdn.net/weixin_45746635/article/details/103826996