drop table if exists test;
create table test (
grade number
);
insert into test (grade)
values (-1), (50), (65), (75), (85), (95), (105);
commit;
set serveroutput on;
declare
l_level varchar2(20);
begin
for cur in (select grade from test) loop
case
when cur.grade >100 then l_level := '数据错误';
when cur.grade >= 90 then l_level := '优秀';
when cur.grade >= 80 then l_level := '良好';
when cur.grade >= 70 then l_level := '中等';
when cur.grade >= 60 then l_level := '及格';
when cur.grade >= 0 then l_level := '不及格';
else l_level := '数据错误';
end case;
dbms_output.put_line(cur.grade || ':' || l_level);
end loop;
end;
/
-1:数据错误
50:不及格
65:及格
75:中等
85:良好
95:优秀
105:数据错误
PL/SQL procedure successfully completed.
set serveroutput on;
declare
l_level varchar2(20);
begin
for cur in (select grade from test) loop
l_level := case
when cur.grade >100 then '数据错误'
when cur.grade >= 90 then '优秀'
when cur.grade >= 80 then '良好'
when cur.grade >= 70 then '中等'
when cur.grade >= 60 then '及格'
when cur.grade >= 0 then '不及格'
else '数据错误'
end;
dbms_output.put_line(cur.grade || ':' || l_level);
end loop;
end;
/
-1:数据错误
50:不及格
65:及格
75:中等
85:良好
95:优秀
105:数据错误
PL/SQL procedure successfully completed.
set serveroutput on;
declare
l_level varchar2(20);
begin
for cur in (select grade from test) loop
case cur.grade
when >100 then l_level := '数据错误';
when >= 90 then l_level := '优秀';
when >= 80 then l_level := '良好';
when >= 70 then l_level := '中等';
when >= 60 then l_level := '及格';
when >= 0 then l_level := '不及格';
else l_level := '数据错误';
end case;
dbms_output.put_line(cur.grade || ':' || l_level);
end loop;
end;
/
-1:数据错误
50:不及格
65:及格
75:中等
85:良好
95:优秀
105:数据错误
PL/SQL procedure successfully completed.
set serveroutput on;
declare
l_level varchar2(20);
begin
for cur in (select grade from test) loop
l_level := case cur.grade
when >100 then '数据错误'
when >= 90 then '优秀'
when >= 80 then '良好'
when >= 70 then '中等'
when >= 60 then '及格'
when >= 0 then '不及格'
else '数据错误'
end;
dbms_output.put_line(cur.grade || ':' || l_level);
end loop;
end;
/
-1:数据错误
50:不及格
65:及格
75:中等
85:良好
95:优秀
105:数据错误
PL/SQL procedure successfully completed.
set serveroutput on;
declare
l_level varchar2(20);
begin
for cur in (select grade from test) loop
case cur.grade
when >100, <0 then l_level := '数据错误';
when >= 90 then l_level := '优秀';
when >= 80 then l_level := '良好';
when >= 70 then l_level := '中等';
when >= 60 then l_level := '及格';
when >= 0 then l_level := '不及格';
end case;
dbms_output.put_line(cur.grade || ':' || l_level);
end loop;
end;
/
-1:数据错误
50:不及格
65:及格
75:中等
85:良好
95:优秀
105:数据错误
PL/SQL procedure successfully completed.
set serveroutput on;
declare
l_level varchar2(20);
begin
for cur in (select grade from test) loop
l_level := case cur.grade
when >100, <0 then '数据错误'
when >= 90 then '优秀'
when >= 80 then '良好'
when >= 70 then '中等'
when >= 60 then '及格'
when >= 0 then '不及格'
end;
dbms_output.put_line(cur.grade || ':' || l_level);
end loop;
end;
/
-1:数据错误
50:不及格
65:及格
75:中等
85:良好
95:优秀
105:数据错误
PL/SQL procedure successfully completed.
select grade,
case cur.grade
when >100, <0 then '数据错误'
when >= 90 then '优秀'
when >= 80 then '良好'
when >= 70 then '中等'
when >= 60 then '及格'
when >= 0 then '不及格'
end as grade
from test;
when >100, <0 then '数据错误'
*
ERROR at line 3:
ORA-02000: missing THEN keyword
with
function get_level(grade in number) return varchar2 is
begin
return case grade
when >100, <0 then '数据错误'
when >= 90 then '优秀'
when >= 80 then '良好'
when >= 70 then '中等'
when >= 60 then '及格'
when >= 0 then '不及格'
end;
end;
select grade, get_level(grade) as lvl
from test;
/
GRADE|LEVEL |
-----+-------+
-1|数据错误|
50|不及格 |
65|及格 |
75|中等 |
85|良好 |
95|优秀 |
105|数据错误|
原文作者:SQL编程思想;如有侵权,请联系管理员删除。