锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

PLSQL——循环控制(LOOP、WHILE、FOR、SELECT INTO)

时间:2023-11-24 11:37:02 le36sn08dno传感器

循环控制用于重复执行一系列语句
三种循环控制类型:
LOOP - 无条件循环loop
WHILE - 按条件循环while
FOR - 循环固定次数for

LOOP 循环

语法:
loop
plsql语句;
exit when 退出循环条件;
循环控制语句;
end loop;
如:

--循环打印1-9个数字 declare   --用于存储数字(循环变量)的声名变量   v_n number(10);  --这里可以赋值 begin   --给循环变量赋值1    v_n:=1;   --循环语句   loop     --循环实施plsql语句     dbms_output.put_line(''||v_n);     --退出循环条件     exit when v_n=9;     --改变循环变量值,确保循环不会死循环(循环控制句)     v_n:=v_n 1;   end loop;   dbms_output.put_line('v_n='||v_n); end; 

exit when:退出循环关键字,如果条件确定,立即退出循环
continue:退出这个循环,循环不会结束,
1、2、3结束1、2、3结束1、2、3结束…
return:退出程序,结束整个程序

WHILE 循环

语法:
while 循环条件 loop
循环体语句;
循环控制语句;
end loop;

如:

--循环打印1到9 declare    --声誉是控制循环的变量    v_n number(10); begin    --给循环变量赋值    v_n:=1;    --while循环语句    while v_n <10 loop      --循环体语句(打印数字)      dbms_output.put_line(''||v_n);      --循环控制语句      v_n:=v_n 1;    end loop;    dbms_output.put_line('v_n='||v_n); end; 

FOR 循环

语法:
for 循环变量 in [reverse] 集合|查询语句|游标变量 loop
循环语句;
end loop;

循环变量:不需要在declare根据中声明,变量类型是基于in以下集合或查询句子,普通数据类型,record类型
reverse:可选参数表示循环的方向,从开始到结束,从结束到开始

集合写数字类型
minValue … maxValue 例如1…10

如:

--循环打印1 到9
begin
  --for循环语句 
  for i in 1..9 loop
    --循环体语句
    dbms_output.put_line(''||i);
  end loop;
end;

for循环查询结果集

--循环打印dept表中的部门信息
begin
  --for循环语句,循环变量v_dept是一个记录类型,查询语句是*,dept%rowtype
  for v_dept in (select * from dept where deptno=&deptno) 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 条件;

注意:select into语句查询出的结果只能是一条数据,超过一条数据会报错;

--输入一个部门编号,打印这个部门的信息
declare
  --声名一个变量用来保存输入的部门编号
  v_deptno number(10);
  --声名一个dept%rowtype类型的变量来保存一条部门信息
  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;
--输入一个部门编号,打印这个部门的信息
declare
  --声名一个变量用来保存输入的部门编号
  v_deptno number(10);
  --声名一个变量用来保存部门编号
  v_dno dept.deptno%type;
  --声名一个变量用来存放部门名称
  v_dname dept.dname%type;
  --声名一个变量用来存放部门位置
  v_loc dept.loc%type;
begin
  --接收从键盘输入的部门编号
  v_deptno:=&deptno;
  --根据输入的部门编号查询出部门信息
  select deptno,dname,loc into v_dno,v_dname,v_loc  from dept where deptno=v_deptno;
  --打印部门信息 
dbms_output.put_line(v_dno||','||v_dname||','||v_loc);
end;
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章