PLSQL流程控制语句(判断、循环)

1.条件控制语句
IF 语句

IF 语句根据条件执行一系列语句,有三种形式:IF-THEN、 IF-THEN-ELSE 和 IF-THEN-ELSIF

--if语句语法:
if 条件表达式 then
   plsql语句;
end if;
--如果条件表达式成立,那么执行then后面的plsql代码,如果条件不成立跳过if语句执行其它语句
declare
str varchar2(10);
begin
    str:='&选择颜色:';
    if str='red' then
        dbms_output.put_line('红色');
    end if;
    if str!='red' then
        dbms_output.put_line('不知道');
    end if;
end;
​
--if else 语句语法:
  if 条件表达式 then
     plsql语句;
  else
     plsql语句;
  end if;
--如果if的条件表达式成立,执行then后面的代码,如果条件不成立执行else后面的代码;
declare
   v_str varchar2(20);
begin
   v_str:='&请输入一个颜色';
   if v_str='red' then
      dbms_output.put_line('它是红色');
   else
      dbms_output.put_line('其它颜色');
   end if;
end;
​
--elsif语句语法:
    if 条件表达式1 then
        plsql语句1;
    ...
    elsif 条件表达式n then
        plsql语句n;
    else
        plsql语句;
    end if;
--如果条件表达式1成立,执行语句1,如果条件1不成立,判断下一个条件表达式,如果所有条件都不成立执行else后面的语句.其中elsif可以有多个,else部分可以省略
declare
  v_str varchar2(20):='&动物:';
begin
  if v_str='dog' then
    dbms_output.put_line('它是一只狗');
  elsif v_str='cat' then
    dbms_output.put_line('它是一只猫');
  elsif v_str='pig' then
    dbms_output.put_line('它是一头猪');
  else
    dbms_output.put_line('不认识');
  end if;
end;
CASE 语句
case 
   when 条件表达式1 then
       plsql命令 值1;
   when 条件表达式2 then
        值2;
     ...
   else 
        默认值;
end case;
--如果条件表达式1成立,那么就执行相应then后面的plsql语句,否则判断下一个条件表达式,如果所有条件都不成立,那么执行else后面的语句,其中else部分可以省略。
declare
  v_str varchar2(20):='&动物:';
begin
  case when v_str='dog' then
    dbms_output.put_line('它是一只狗');
  when v_str='cat' then
    dbms_output.put_line('它是一只猫');
  when v_str='pig' then
    dbms_output.put_line('它是一头猪');
  else
    dbms_output.put_line('不认识');
  end case;
end;
2.循环控制语句

循环控制用于重复执行一系列语句,分为三种类型:LOOP - 无条件循环;WHILE - 根据条件循环;FOR - 循环固定的次数

LOOP 循环
loop 
  plsql语句;
  exit when 退出循环条件;
  循环控制语句;
end loop;
--循环打印1到9的9个数字
declare
  v_n number(10):=1; 
begin
  loop
     dbms_output.put_line(''||v_n);
     exit when v_n=9;
     v_n:=v_n+1;
  end loop;
end;
​
exit when:--退出循环关键字,如果条件成立立即退出循环
continue:--退出本次循环,不会结束循环
return:--退出程序,结束整个程序
WHILE 循环
 while 循环条件 loop
    循环体语句;
    循环控制语句;
 end loop;
--循环打印1到9
declare
   v_n number(10):=1;
begin
   while v_n <10 loop
      dbms_output.put_line(''||v_n);
      v_n:=v_n+1;
   end loop;
end;
FOR 循环
for 循环变量 in [reverse] 集合|查询语句|游标变量 loop
  循环体语句;
end loop;
reverse:表示循环的方向,不加表示从开始到结尾,加上表示从结尾到开头
--循环打印1 到9
begin
  for i in 1..9 loop
    dbms_output.put_line(''||i);
  end loop;
end;
​
--循环打印dept表中的部门信息
begin
  for v_dept in (select * from dept) loop
     dbms_output.put_line(v_dept.deptno||','||v_dept.dname||','||v_dept.loc);
  end loop;    
end;
--select into语句(查询出的结果只能是一条数据):
select 列名,列名,..,列名 into 变量1,变量2,..,变量n|record变量|rowtype变量 from 表名 where 条件;
--输入一个部门编号,打印这个部门的信息
declare
  v_deptno number(10);
  v_dept dept%rowtype;
begin
  v_deptno:=&deptno;
  select * into v_dept  from dept where deptno=v_deptno;
  dbms_output.put_line(v_dept.deptno||','||v_dept.dname||','||v_dept.loc);
end;

你可能感兴趣的:(PLSQL,数据库,算法,oracle)