条件语句
--方法一
declare
v_sum user.sum%type;
begin
select sum into v_sum from user from id=1;
if v_sum>=100 then dbms_output.put_line('优秀');
elsif v_sum>=60 then dbms_output.put_line('良好');
else dbms_output.put_line('差生');
end if;
end;
--方法一修改版
declare
v_sum user.sum%type;
v_temp varchar2(20);
begin
select sum into v_sum from user from id=1;
if v_sum>=100 then v_temp := '优秀';
elsif v_sum>=60 then v_temp := '良好';
else v_temp := '差生';
dbms_output.put_line(v_temp);
end if;
end;
--方法二
declare
v_name varchar2(10);
v_temp varchar2(10);
begin
select name into v_name from user where is=1;
v_temp := case _name when '张三' then ‘A’
when '李四' then 'B'
when '王五' then 'C'
else '赵六'
end;
dbms_output.put_line(v_temp);
end;
循环语句
--方法一(循环1-100)
declare
v_i number(5) :=1;--初始化条件
begin
loop --循环体
dbms_output.put_line(v_i);
v_i := v_i + 1; --迭代条件
exit when v_i >= 100; --循环条件
end loop;
end;
--方法二
declare
v_i number(5); --初始化条件
begin
while v_i<= 100 loop
dbms_output.put_line(v_i);
v_i := v_i + 1;
end loop;
end;
--方法三
begin
for i in 1..100 loop
dbms_output.put_line(i);
end loop;
end;
--方法四(输出2-100的质数,goto标签)
declare
v_flag number(1) :=1;
begin
for v_i in 2..100 loop
for v_j in 2..sqrt(v_i) loop
if mod(v_i,v_j)=0 then v_flag :=0;
goto label; --当执行到这里时,跳转到指定标签
end if;
end loop;
<<label>> --标签
if v_flag=1 then dbms_output.put_line(v_i);
end if;
v_i :=1;
end loop;
end;
--方法五(打印1-100,到50时,跳出循环)
begin
for i in 1..100 loop
if i=50 then goto label;
end if;;
dbms_output.put_line(i);
end loop;
<<label>>
dbms_output.put_line('打印结束');
end;
--方法五修改版
begin
for i in 1..100 loop
if i=50 then dbms_output.put_line('打印结束');
exit;
end if;
dbms_output.putl_line(i);
end loop;
end;