循环是指在程序中重复执行一条或多条语句、PL/SQL中的循环主要有三种: 1.Basic Loop 2. FORLoop 3.WHILE Loop下面来逐一介绍这三种循环的用法。一、BasicLoops 基本循环的格式如下: LOOP statement1; … EXIT [WHENcondition]; END LOOP; 这里的EXIT是用来退出循环的,如果没有EXIT,则会变成死循环。 下面来看一个小例子:SQL>select location_id, city, country_idfromlocations where country_id = ‘CA’;
SQL>editSQL>/SQL>select location_id, city, country_id f免费云主机域名rom locations where country_id = ‘CA’;
二、WHILE循环 WHILE循环的格式如下: WHILE condition LOOP statement1; statement2; … END LOOP; WHILE循环是指当condition的结果为TRUE时,就执行循环体。它的循环体可以执行0次或多次,比较适用于循环次数不确定的情况。当条件不满足,就会自动退出循环。 现在使用WHILE循环来改写之前的例子:SQL>edit SQL>/SQL>select location_id, city, country_id from locations where country_id = ‘CA’;LOCATION_ID CITYCO———– —————————— — 1800 Toronto CA 1900 Whitehorse CA 1901 Montreal CA 1902 Montreal CA 1903 Montreal CA 1904 Montreal CA 1905 Montreal CA 1906 Montreal CA8 rows selected.— 又多了三条记录 如果条件一次都不满足,WHILE循环会出现一次都不执行的情况。三、FOR循环 FOR循环的基本格式为:FORcounter IN [REVERSE] — REVERSE是关键字,表示反过来循环,如从10到1进行循环 lower_bound..upper_bound LOOP —分别是下边界和上边界,变量counter和上下边界都必须是数值型 statement1; statement2; …ENDLOOP; FOR循环多用于循环次数已知的情况,FOR循环不需要专门声明一个变量作为计数器。它的计数器出了FOR循环之后是不可以使用的,如果一定要使用,建议还是专门声明一个计数器。和其他语言的FOR循环不同的是,用户不能自定义步长,如果想自定义步长,可以用基本循环或WHILE循环代替。 下面用FOR循环来改写之前的例子:SQL>editSQL>/
SQL>/SQL>select location_id, city, country_id from locations where country_id = ‘CA’;
FOR循环是比较受欢迎一种循环,因为它的循环次数可控,不过使用FOR循环,需要注意一些基本的规则:A. 计数器counter只能在循环内部引用,它不需要在循环外部定义;B. 不要为计数器counter赋值,它的赋值是自动完成的,但是可以将计数器的值赋值给其他变量;C. 不要使用NULL值作为循环次数的下界和上界;D. 下界和上界可以为非整数,但非整数会被自动计算为整数;E. 加了关键字REVERSE之后表示循环的次数为倒序,即从上界向下界执行,但是即使使用了REVERSE,下界的值仍然应该比上界的值小,下面举个例子来演示REVERSE的用法: SQL> editSQL> /四、循环种类的选择 循环种类的选择应根据实际需要,这里仅提供一些基本的建议:1. 循环体必须至少执行一次,建议使用Basic LOOP;2. 先对条件进行判断,以决定循环体执行0次或多次,尤其是循环次数不确定的情况,建议使用WHILE循环;3. 循环次数已知,建议使用FOR循环。五、循环的嵌套 循环可以嵌套,但注意嵌套的次数不要过多,最好不要超过3层;使用标签来区分代码块和循环体是个不错的编程习惯;EXIT结合标签使用,可以指定当前循环退出到哪一层循环,下面来看一个小例子:
六、CONTITUE关键字 CONTITUE是ORACLE11g中引入的概念,如果数据库的版本是11g以前的,则不能用CONTINUE。CONTITUE的用法为: 1. 跳过当前语句,但不退出循环,直接进入下一轮循环; 2. 它的句法和EXIT一样,可以使用 a. CONTINUE; — 不附加条件 b.CONTINUE WHEN condition; —附加条件 c.CONTINUE label; — 跳转到某一个标签 在11g以前如果要实现CONTINUE的功能,需要写更为复杂的程序,引入CONTINUE可以的简化程序,提高性能。下面来看一个CONTINUE的例子:SQL>edit SQL>/再来看一个CONTINUE和标签结合使用的例子:SQL>editSQL>/再来看一个使用CONTINUE从内层循环跳转到外层循环的例子:SQL>editSQL>/六、GOTO 语句 CONTINUE加上标签一起使用,和GOTO语句比较相似。GOTO语句可以无条件跳转到另一个代码块,但该代码块必须和跳转前的代码块处于同一可执行的section(如BEGIN或EXCEPTION部分)中。在实际编程中不建议使用GOTO,因为它不需要条件控制,容易破坏程序的可读性。下面来看一个GOTO语句的例子:SQL>editSQL>/GOTO语句使用时最好加上IF语句设定跳转的条件。
这篇文章主要介绍redis两种持久化方式的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的免费云主机域名RDB持久…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。