oracle数据库从入门到实战

第四章习题练习代码

期末复习练习

--例4.1
set serveroutput on;
BEGIN
  dbms_output.put_line('chenruxu');
END;
--例4.2
set serveroutput on;
DECLARE
  v_length NUMBER:=&length;
  v_width NUMBER:=&width;
  v_area Number;
BEGIN
  v_area := v_length*v_width;
  DBMS_OUTPUT.PUT_Line('长方形的面积是'||v_area);
END;

--例4.3
set serveroutput on;
DECLARE
  v_length NUMBER:=&length;
  v_width NUMBER:=&width;
  v_area NUMBER;
BEGIN
  declare
    v_cir NUMBER;
  BEGIN
    v_cir:=(v_length+v_width)*2;
    dbms_output.put_line('周长是'||v_cir);
  END;
  v_area:=v_length*v_width;
  dbms_output.put_line('面积是'||v_area);
END;


--圆的面积和周长

set serveroutput on;
DECLARE
  v_r NUMBER:=&r;
  v_cir NUMBER;
  v_area number;
BEGIN
  v_cir:=2*ACOS(-1)*v_r;
  v_area:=ACOS(-1)*v_r*v_r;
  dbms_output.put_line('圆的周长是:'||v_cir||'圆的面积是:'||v_area);
END;

--pl/sql中的条件语句
--if4.8
select * from sc;

set serveroutput on;
DECLARE
  v_sno student.sno%TYPE:=&sno;
  v_grade sc.grade%TYPE;
BEGIN
  SELECT AVG(grade) into v_grade from sc where sno=v_sno;
  if v_grade>85 then
    dbms_output.put_line('此同学的平均成绩为'||v_grade||'一等奖学金');
  elsif v_grade>=75 then
    dbms_output.put_line('此同学的平均成绩为'||v_grade||'二等奖学金');
  else
    dbms_output.put_line('此同学的平均成绩为'||v_grade||'无奖学金');
  end if;
END;

--4.9if 判断三个数中的最大值

set serveroutput on;
DECLARE
  v_a NUMBER:=&a;
  v_b NUMBER:=&b;
  v_c NUMBER:=&C;
  v_x NUMBER;
BEGIN
  if v_a > v_b and v_a > v_c then
    v_x:=v_a;
  else 
    v_x:=v_b;   --假设b为其中最大的数
    if v_c >v_x then
      v_x:=v_c;
    end if;
  end if;
  dbms_output.put_line('三个数中最大的数是'||v_x);
END;

-- 4.9(2)

set serveroutput on;
DECLARE
  v_a number:=&a;
  v_b number:=&b;
  v_c number:=&c;
  v_max number;
begin
  if v_a > v_b and v_a > v_c then
    v_max := v_a;
  elsif v_b>v_c then
    v_max:=v_b;
  else
    v_max:=v_c;
  end if;
  dbms_output.put_line('三个数中最大的数是'||v_max);
end;

--带有选择符的case条件判断注意在输入的时候
--需要加上指定的‘’代表输入为varchar2类型
set serveroutput on;
DECLARE
  v_grade VARCHAR2(10):=&grade;
begin
  CASE v_grade
    when 'A' then dbms_output.put_line('A类');
    when 'B' then dbms_output.put_line('B类');
    when 'C' then dbms_output.put_line('C类');
    when 'D' then dbms_output.put_line('D类');
    else dbms_output.put_line('无效');
  end case;
end;


desc student
desc sc
--case搜索语句完成学生成绩的判定
set serveroutput on;
DECLARE
  v_sno student.sno%type:=&sno;
  v_grade sc.grade%type;
begin
  select AVG(grade) into v_grade from sc where sno = v_sno;
  case
    when v_grade>85 then dbms_output.put_line('一等奖学金');
    when v_grade>75 then dbms_output.put_line('二等奖学金');
    else  
      dbms_output.put_line('无奖学金'||'成绩是'||v_grade);
  end case;
end;


--pl/sql的循环语句的测试
--loop方式实现循环

set serveroutput on;
declare
  v_i number:=1;
begin
  loop
    dbms_output.put_line(v_i||'的平方是'||v_i*v_i);
    v_i:=v_i + 1;
    exit  when v_i>10;
  end loop;
end;

--loop循环结合

set serveroutput on;
declare
  i number:=1;
begin
  loop
    dbms_output.put_line(i||'的平方为'||i*i);
    i:=i+1;
    IF i>10 then
      exit;
    end if;
  end loop;
end;

--通过while循环来实现10的阶乘
--注意点在于while的后面不能加;否则无法进循环
set serveroutput on;
declare
  i number:=1;
  n number:=1;
begin
  while i<=10 loop
    n:=n*i;
    i:=i+1;
  end loop;
  dbms_output.put_line('10的阶乘是:'||n);
end;

--正向的for循环输出10的阶乘
set serveroutput on;
declare
  n number:=1;
begin
  for i in 2..10 loop
    n:=n*i;
  end loop;
  dbms_output.put_line('10的阶乘:'||n);
end;
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值