Oracle数据库管理、应用与开发(十七)

22.5 循环语句

最基本的循环称为无条件循环,如果没有指定exit语句,循环将无条件执行。这种循环称为死循环,死循环尽量避免。

22.5.1 无条件循环

语法格式如下:

                     Loop

                   ---statement---

                           Exit when condition

                           End loop;

案例

SQL> declare 
      				i number(2):=1; 
       			begin 
            		loop 
              			dbms_output.put_line(i);
                   		i:=i+1; 
          				exit when i>10; 
          			end loop; 
          		end;
   				/ 

 

22.5.2 While循环

                       语法形式如下:

                                While condition

                         Loop

                       Statement;

                           End loop;

SQL> declare 
     				i number(2):=1; 
         		begin 
           			while i<10   
              			loop dbms_output.put_line(i); 
                			i:=i+1; 
             			end loop; 
          		end;
  				/

 

22.5.3 For循环

         语法形式:

                               For loop_control_variable in [reverse] lower upper loop

                        Statement;

                           End loop;

SQL> begin
         			for i in 1..10 
            		loop 
            			dbms_output.put_line(i); 
           			end loop;
       			end;
      			/

 

22.5.4 PL/SQL语句中的SQL语句

declare
   				countnum number(2); //声明变量
begin
select count(*) into countnum from emp; //into的作用把从数据中检测出的数据赋值给哪个变量 
   				dbms_output.put_line(countnum);
end;
/

 

注意:如果在select中没有into语句则会出现错误。

declare
   				empno number(4);
   				ename varchar2(10);
   				job varchar2(9);
begin
   				select empno,ename,job into empno,ename,job from emp;
   				dbms_output.put_line(empno||'/'||ename||'/'||job);
end;
/

 

以上代码中会出现错误,原因是因为定义的变量只可以存储一个单独的值,而返回的是多个值。正确的语法格式应该为:

SQL> declare
  			2     	empno number(4);
  			3     	ename varchar2(10);
  			4     	job varchar2(9);
  			5    begin
  	6     select empno,ename,job into empno,ename,job from emp where empno='7369'; //在这加上where条件了
  			7     	dbms_output.put_line(empno||'/'||ename||'/'||job);
  			8  	 end;
  			9    /
7369/SMITH/CLERK

 

你可能感兴趣的:(oracle,sql)