一.逻辑控制
1.if语句
在PL/SQL中 if语句的格式如下:
IF CONDITION THEN
LOGIC CODE
ELSIF THEN
LOGIC CODE
...
ELSE
LOGIC CODE
END IF;
就是普通的逻辑判断代码,没什么可说的.
常用于实现排序.
例如冒泡排序
2.case when语句
前情提要 case when 语句没什么作用(自我感觉)
在PL/SQL中 case when语句的格式如下:
CASE VAR
WHEN VALUE1 THEN
LOGIC CODE
WHEN VALUE2 THEN
LOGIC CODE
...
ELSE
LOGIC CODE
END CASE;
上述这种格式 在case后面跟了 变量名
所以在 when后面判断时 不能跟 表达式 只能跟值
CASE
WHEN EXP1 THEN
LOGIC CODE
WHEN EXP2 THEN
LOGIC CODE
...
ELSE
LOGIC CODE
END CASE;
在这种格式中 由于CASE后面没有跟变量名
所以在when做判断的时候 跟的是EXP 而不是VALUE
二.循环语句
1.for循环
似乎不论是哪种编程语言的循环 都会涉及到FOR 循环
提起for循环我们就会想到:
FOR(I;I<.LENGTH;I++);
--不论是C 还是C++ 又或者是JAVA 都是一样的格式
--但是在PL/SQL中 变了
FOR I IN 1..VAULE LOOP
LOGIC CODE
END LOOP;
--值得注意的是 在FOR 循环中 I是一个非人为定义的变量
--也就是说 不用在DECLARE 中定义 I NUMBER(5);
--这个循环因子不论叫什么 都不可以自己定义
在PL/SQL 中 也只有FOR 才可以实现多层重复循环
2.loop循环
LOOP
EXIT WHEN CONDITION;--这里的循环因子需要自己定义
LOGIC CODE
END LOOP;
3.while循环
WHILE CONDITION LOOP
LOGIC CODE
END LOOP;
三.标签
GOTO<A>
--goto标签<<标签名>> -了解
--语法
goto <<标签名>>
declare
i number(2);
begin
i:=1;
<<A>>
if i>9 then
return; --程序结束
end if;
dbms_output.put_line('goto-'||i);
i:=i+1;
goto A;
end;
--控制循环退出语句
exit/continue 只能使用在循环体内
return
begin
for i in 1..9 loop
if i=3 then
exit; --退出循环
end if;
dbms_output.put_line('当前循环值:'||i);
end loop;
dbms_output.put_line('程序结束');
end;
begin
for i in 1..9 loop
if i=3 then
continue; --跳过当前循环
end if;
dbms_output.put_line('当前循环值:'||i);
end loop;
dbms_output.put_line('程序结束');
end;
begin
for i in 1..9 loop
if i=3 then
return; --程序结束
end if;
dbms_output.put_line('当前循环值:'||i);
end loop;
dbms_output.put_line('程序结束');
end;
--特殊用法
begin
for i in 1..9 loop
return when i=3;
dbms_output.put_line('当前循环值:'||i);
end loop;
dbms_output.put_line('程序结束');
end;
begin
for i in 1..9 loop
if i=3 then
goto A;
end if;
dbms_output.put_line('当前循环值:'||i);
end loop;
<<A>>
dbms_output.put_line('程序结束');
end;