/****************************************************************/
/* PL/SQL流程控制语句 */
/* 1.条件2.循环3.顺序 */
/****************************************************************/
/*
IF <布尔表达式> THEN
PL/SQL 和 SQL语句
END IF;
-----------------------
IF <布尔表达式> THEN
PL/SQL 和 SQL语句
ELSE
其它语句
END IF;
-----------------------
IF <布尔表达式> THEN
PL/SQL 和 SQL语句
ELSIF < 其它布尔表达式> THEN
其它语句
ELSIF < 其它布尔表达式> THEN
其它语句
ELSE
其它语句
END IF;
*/
--创建测试数据
select * from Teststudent;
declare v_name Teststudent.Name%type;
v_comment varchar2(40);
v_age Teststudent.Age%type;
Begin
select age,name into v_age,v_name from Teststudent where id=5;
if v_age<10 then
v_comment :=v_name||'是小正太一枚啊';
elsif v_age<40 then
v_comment :=v_name||'中年人啊';
else
v_comment :=v_name||'算了,你是个老年人';
end if;
dbms_output.put_line(v_comment);
End;
--2.Case语句
/*
---------格式一---------
CASE 条件表达式
WHEN 条件表达式结果1 THEN
语句段1
WHEN 条件表达式结果2 THEN
语句段2
......
WHEN 条件表达式结果n THEN
语句段n
[ELSE 条件表达式结果]
END;
---------格式二---------
CASE
WHEN 条件表达式1 THEN
语句段1
WHEN 条件表达式2 THEN
语句段2
......
WHEN 条件表达式n THEN
语句段n
[ELSE 语句段]
END;
*/
--1.
declare v_name Teststudent.Name%type;
v_age teststudent.age%type;
v_comment varchar2(40);
Begin
select age,name into v_age,v_name from teststudent where id=5;
case v_age
when 10 then
v_comment:='caishisui';
when 40 then
v_comment:='叔叔你好';
else
v_comment:='年龄真老啊';
end case;
dbms_output.put_line(v_comment);
End;
--2;
select * from teststudent;
declare v_name Teststudent.Name%type;
v_age teststudent.age%type;
v_comment varchar2(40);
Begin
select age,name into v_age,v_name from Teststudent where id=5;
case
when v_age<10 then
v_comment :='小孩';
when v_age<40 then
v_comment :='中年';
else
v_comment :='老年';
dbms_output.put_line(v_comment);
end case;
End;
/*
3.循环:简单循环、while循环、数字循环
*/
--1.简单循环
/*
LOOP
要执行的语句;
EXIT WHEN <条件语句> --条件满足,退出循环语句
END LOOP;
*/
declare v_i number(2):=0;--刚开始未赋值,悲剧了就
Begin
loop
dbms_output.put_line('当前i值是'||v_i);
v_i:=v_i+1;
exit when v_i>10;
end loop;
End;
--2.while循环
/*
WHILE <布尔表达式> LOOP
要执行的语句;
END LOOP;
*/
declare v_i int :=1;
Begin
while v_i<10
loop
dbms_output.put_line('当前V_I值是'||v_i);
v_i :=v_i+1;
end loop;
End;
--3.数字循环
/*
[<<循环标签>>]
FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP
要执行的语句;
END LOOP [循环标签];
*/
Begin
for v_i in reverse 1..10 loop
dbms_output.put_line('当前V_I值是'||v_i);
end loop;
End;
Oracle流程控制相关
最新推荐文章于 2021-04-03 09:09:40 发布