declare
  a date :=to_date('2001-01-01','yyyy-mm-dd');
  b date :=to_date('2001-01-02','yyyy-mm-dd');
  c date :=to_date('2001-01-03','yyyy-mm-dd');
  d date :=to_date('2001-01-04','yyyy-mm-dd');
  e date :=to_date('2001-01-05','yyyy-mm-dd');
  f date :=to_date('2001-01-06','yyyy-mm-dd');
begin
  -- 六个时间是从小到大的顺序来的。   A<B<C<D<E<F
  --如果B的时间小于A的话,就给出提示,B的时间不能小于A 
  --如果C的时间小于A的话,就给出提示,C的时间不能小于A 。以此类推。
  
  --如果C的时间小于B的话,就给出提示,C的时间不能小于B 
  ---每一层都要验证  反正后一个的时间不能比前面任何一个时间小。 
   
end; 

解决方案 »

  1.   

    这个不难啊,情况考虑全了就行了啊,单纯的 if..then ..end if;
      

  2.   


    if a<b then
        if b<c then
             if c<d then
                 if d<e then 
                     if e>f then 
                           dbms_output.put_line('F的时间不能小于E');
                     end if;
                 else
                     dbms_output.put_line('E的时间不能小于D');
                 end if;
             else 
                 dbms_output.put_line('D的时间不能小于C');
             end if;
        else
            dbms_output.put_line('C的时间不能小于B');
        end if;
    else
       dbms_output.put_line('B的时间不能小于A');
    end if;
     
      

  3.   

    我想提示出所有不满足的条件,比如a>b>c>d>e>f要提示出5个条件都不满足
      

  4.   


    SQL> declare
      2  type dt_type is table of date;
      3  dt_arr dt_type:=dt_type(to_date('2001-01-01','yyyy-mm-dd'),to_date('2001-01-02','yyyy-mm-dd'),to_date('2001-01-03','yyyy-mm-dd'),
      4  to_date('2001-01-04','yyyy-mm-dd'),to_date('2001-01-05','yyyy-mm-dd'),to_date('2001-01-06','yyyy-mm-dd'));
      5  begin
      6  for i in 1..dt_arr.count loop
      7  if i<dt_arr.count then
      8  if dt_arr(i+1)-dt_arr(i)<0 then
      9  dbms_output.put_line(dt_arr(i+1)||'的值不能少于'||dt_arr(i));
     10  else
     11  dbms_output.put_line(dt_arr(i+1)||'的值大于'||dt_arr(i));
     12  end if;
     13  else
     14  if dt_arr(i)-dt_arr(i-1)<0 then
     15  dbms_output.put_line(dt_arr(i)||'的值不能少于'||dt_arr(i-1));
     16  else
     17  dbms_output.put_line(dt_arr(i)||'的值大于'||dt_arr(i-1));
     18  end if;
     19  end if;
     20  end loop;
     21  end;
     22  /
     
    PL/SQL procedure successfully completed
     
    SQL> set serveroutput on
    SQL> /
     
    02-1月 -01的值大于01-1月 -01
    03-1月 -01的值大于02-1月 -01
    04-1月 -01的值大于03-1月 -01
    05-1月 -01的值大于04-1月 -01
    06-1月 -01的值大于05-1月 -01
    06-1月 -01的值大于05-1月 -01
     
    PL/SQL procedure successfully completed
     
    SQL>