oralce 经典习题系列

数据库数据类型

The problem

1 在PL/SQL中使用变量和常量。 2 编写一个算术表达式的例子。 3 编写一个IF语句的例子。 4 编写一个CASE语句的例子。 5 编写一个LOOP语句的例子。 6 编写一个异常处理的例子。


The answer

代码实现

--(1)在PL/SQL中使用变量和常量。
--(2)编写一个算术表达式的例子。
--(3)编写一个IF语句的例子。
--(4)编写一个CASE语句的例子。
--(5)编写一个LOOP语句的例子。
--(6)编写一个异常处理的例子。
--1-2 做一个圆形面积的计算
set serveroutput on;
declare 
  PI constant number(15.10) :=3.1415926;
  RaidL number(10.3);
  CircleArea number(15,3);
begin
  RaidL :=5;
  CircleArea := PI * power(RaidL,2);
  SYS.DBMS_OUTPUT.PUT_LINE('圆形面积:'||CircleArea);
end;
--1-2.1
set SERVEROUTPUT ON ;
declare 
  today varchar2(20);
  begin 
    today :=to_char(sysdate,'day');
    dbms_output.put_line('today is '||today);
  end;
--3编写IF语句的例子
set serveroutput on;
declare 
  n number(2);
  n1 number(2);
begin 
  n:=5;
  n1:=6;
  if n>n1 then 
  dbms_output.put_line('n>n1');
  else
  dbms_output.put_line('n1>n');
  end if;
end;
--case 语句的例子,根据查询pet表的值来输出结果

set serveroutput on;
declare 
  v_pet pet.species%type;
begin 
  select species into v_pet from pet where owner ='Harold';
  CASE 
    WHEN v_pet = 'cat' THEN dbms_output.put_line('Harold like cat!');
    when v_pet ='dog'  then dbms_output.put_line('Harold like dog!');
    when v_pet ='bird' then dbms_output.put_line('Harold like bird!');
    when v_pet ='java' then dbms_output.put_line('Harold like java!');
  end case;
end;
-- loop 语句的例子
--5.1 打印1-9
set serveroutput on;
declare
i number(3);
begin
  i :=1; 
  loop 
    dbms_output.put_line(i);
    i:=i+1;
    exit when i > 9 ;
  end loop;
end;
--5.2计算1-100内的偶数之和,i作为累加器 j计数 k做步长  i=i+k 步长值 0+2 ,2+4 ,2+4+6  
set serveroutput on;
declare 
  i number :=0;
  j number :=1;
  k number :=2;
begin
  loop
    i:=i+j*k;
    j:=j+1;
    exit when j*k>100;
    end loop;
  dbms_output.put_line(i);
 end;
--6处理异常 ,先制造出异常结果,然后通过 exception 捕捉并处理。
declare 
v_spec  pet.species%type;
begin
select species into v_spec  from pet where name ='zs';
dbms_output.put_line(v_spec);
exception 
 when no_data_found then dbms_output.put_line('没有匹配的数据!');
end;