Oracle控制结构

选择结构

If  ****  then

  **** 

else

  ****

end if;

 

If  **** then

  **** 

elsif then

  ****

end if;

CASE test_value
when value1 THEN statements1;
when value2 THEN statements2;
……
when valuen THEN statementsn;
[ELSE else_ statements;]
END CASE;

循环结构

While **** loop

  ****

end loop;

 

Loop

  exit    //一定要有exit,不然死循环

end loop;

 

For x in 1..100 loop

       ****

end loop;

 

跳转结构

<<lable>>

goto

块内可以跳转,内层块可以跳到外层块,但外层块不能跳到内层。
不能从IF语句外部跳入IF语句内部。不能从循环体外跳入循环体内。不能从子程序外部跳到子程序中

DECLARE
v_counter BINARY_INTEGER :=1;
BEGIN
<<LABEL>>
INSERT INTO temp_table VALUES (v_counter, 'Loop index');
v_counter := v_Counter + 1;
IF v_counter<=50 THEN
GOTO LABEL;
END IF;
END;

求素数

 

DECLARE
v_start number(4);
v_end number(4);
v_flag number(1):=0;
BEGIN
v_start :=&start_num;
v_end :=&end_num;
for x in v_start..v_end loop
for y in 2..sqrt(x) loop
if mod(x,y)=0 then
v_flag:=0;
exit;
else
v_flag:=1;
end if;
end loop;
if v_flag=1 then
dbms_output.put_line(x);
end if;
end loop;
END;

 

原文地址:https://www.cnblogs.com/mobai95/p/12461218.html