Oracle19C入门到熟练018-PL/SQL编程中if与loop

学习要求

有一定关系型数据的操作功底,会SQL语句

教学目标

熟练掌握Oracle数据库PL/SQL编程中控制语句

条件语句

if....then....end if

IF 布尔表达式  THEM
	PL/SQL和SQL语句
END IF;

if....then..else...end if

IF 布尔表达式  THEM
	PL/SQL和SQL语句
ELSE
	其他语句
END IF;	

if....then..elsif...then...end if

IF 布尔表达式  THEM
	PL/SQL和SQL语句
ELSIF 布尔表达式  THEM
	其他语句
END IF;

注意:是ELSIF 不是 ELSEIF

case ... when ... then ....else .... end

CASE 变量/列
    WHEN 值1 THEN 结果1
    WHEN 值2 THEN 结果2
    WHEN 值N THEN 结果N
    [ ELSE 兜底结果]
END;

需求:输入一个年龄,如果大于18岁,输出:欢迎光临;如果小于18岁,输出:18禁;如果等于18岁:输出:请家长陪同观看

declare
	v_age number(2);
begin
	v_age := &v_age; -- 交互输入v_age的值
	if v_age > 18 then
		dbms_output.put_line('欢迎光临');
	elsif v_age < 18 then
		dbms_output.put_line('18禁');
	else 
		dbms_output.put_line('请家长陪同观看');
	end if;
end;

需求:输入一个字符串,如果字符为A,输出:优秀;如果字符为B,输出:良;如果字符为C,输出:一般;如果字符为D,输出:不及格

declare
	v_char varchar2(2);
	v_result varchar2(10);
begin
	v_char := &v_char; -- 交互输入v_age的值
	v_result := 
	case v_char
		when 'A' then '优秀'
		when 'B' then '良'
		when 'C' then '一般'
		else '不及格'
	end;
	dbms_output.put_line(v_result);
end;
		

注意:输入的字符串必须使用 '' 括起来

循环语句

loop循环

LOOP
	要执行的语句
	EXIT WHEN 条件语句;  -- 条件满足退出,不满足继续循环
END LOOP;

需求:求1到100的总和

declare
	v_sum number(5) := 0;
	v_i number(3) := 1;
begin
	loop
		v_sum := v_sum + v_i;
		v_i := v_i + 1;
		exit when v_i > 100;
	end loop;
	dbms_output.put_line(v_sum);
end;

while循环

WHILE 布尔表达式 LOOP
	要执行的语句
END LOOP;

需求:求1到100的总和

declare
	v_sum number(5) := 0;
	v_i number(3) := 1;
begin
	while v_i <= 100 loop
		v_sum := v_sum + v_i;
		v_i := v_i + 1;
	end loop;
	dbms_output.put_line(v_sum);
end;

数字循环

FOR 变量  IN 最小值..最大值 LOOP
	要执行语句
END LOOP;

注意:循环操作必须是数字类型, 最小值,最大值必须是整数,不能是变量或者表达式

需求:求1到100的总和

declare
	v_sum number(5) := 0;
begin
	for v_i in 1 .. 100 loop
		v_sum := v_sum + v_i;
		-- v_i := v_i + 1;   -- 不需要自增,语法自己自增
	end loop;
	dbms_output.put_line(v_sum);
end;

循环控制语句

用于控制循环的走向的语句

goto语句

goto语句:程序执行中,无条件跳到指定标签位置

GOTO label
........
<<label>>	

需求:循环打印10次helloword,在第5次时退出

declare
begin
	for v_i in 1 .. 10 loop
		if v_i = 5 then
			goto output;
		end if;
		dbms_output.put_line('helloword-'||v_i );
	end loop;
	<<output>>
	dbms_output.put_line('循环结束');
end;
		

exit语句

exit语句:跳出循环,类似Java中的break语法

需求:循环打印10次helloword,在第5次时退出

declare
begin
	for v_i in 1 .. 10 loop
		if v_i = 5 then
			exit;
		end if;
		dbms_output.put_line('helloword-'||v_i );
	end loop;
	dbms_output.put_line('循环结束');
end;
		

continue语句

continue语句:结束本次循环,继续下次循环。注意:oracle 11g新加的

需求:循环打印10次helloword,不打印第5次

declare
begin
	for v_i in 1 .. 10 loop
		if v_i = 5 then
			continue;
		end if;
		dbms_output.put_line('helloword-'||v_i );
	end loop;
	dbms_output.put_line('循环结束');
end;
		

return 语句

return语句:结束程序

需求:循环打印10次helloword,在第5次时直接退出

declare
begin
	for v_i in 1 .. 10 loop
		if v_i = 5 then
			return;
		end if;
		dbms_output.put_line('helloword-'||v_i );
	end loop;
	dbms_output.put_line('循环结束');
end;
		

null 语句

null 语句:表示“不用做任何事情”的意思,相当于一个占位符,目的仅仅是提高程序的可读性。

需求:循环打印10次helloword,不打印第5次

declare
begin
	for v_i in 1 .. 10 loop
		if v_i = 5 then
			null;  -- 不做任何操作
		else
			dbms_output.put_line('helloword-'||v_i );
		end if;
	end loop;
	dbms_output.put_line('循环结束');
end;
		

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪飞yes

我对钱没兴趣~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值