Using PL/SQL Control Structures
2012-03-19 21:53
239 查看
以下为控制结构需要注意的:
在条件判断比较多的情况下,推荐使用CASE语句代替IF/ELSE控制
The value of a Boolean expression can be assigned directly to a Boolean variable. You
can replace the first IF statement with a simple assignment:
case语句:
The ELSE clause is
optional. However, if you omit the ELSE clause, PL/SQL adds the following implicit
ELSE clause:
ELSE RAISE CASE_NOT_FOUND;
There is always a default action, even when you omit the ELSE clause. If the CASE
statement does not match any of the WHEN clauses and you omit the ELSE clause,
PL/SQL raises the predefined exception CASE_NOT_FOUND.
如果忽略了ELSE语句,系统会默认的添加一条ESLE语句,当找不到匹配的条件,就会报出异常信息。
case语句的两种结构:
搜索结构的CASE语句:
LOOP
在循环中有两种类型的EXIT可以使用
1、EXIT
2、EXIT WHEN
FOR LOOP循环注意事项:
The bounds of a loop range can be literals, variables, or expressions but must evaluate
to numbers. Otherwise, PL/SQL raises the predefined exception VALUE_ERROR.
循环的范围可以是文本,变量或者表达式,但是他必须可以证明为数字类型,否则PL/SQL将会抛出值错误的异常信息
当需要进行FOR LOOP的逆向循环的时候,需要使用关键字 REVERSE.
输出的结果为3、2、1
在条件判断比较多的情况下,推荐使用CASE语句代替IF/ELSE控制
The value of a Boolean expression can be assigned directly to a Boolean variable. You
can replace the first IF statement with a simple assignment:
overdrawn := new_balance < minimum_balance;
case语句:
The ELSE clause is
optional. However, if you omit the ELSE clause, PL/SQL adds the following implicit
ELSE clause:
ELSE RAISE CASE_NOT_FOUND;
There is always a default action, even when you omit the ELSE clause. If the CASE
statement does not match any of the WHEN clauses and you omit the ELSE clause,
PL/SQL raises the predefined exception CASE_NOT_FOUND.
如果忽略了ELSE语句,系统会默认的添加一条ESLE语句,当找不到匹配的条件,就会报出异常信息。
case语句的两种结构:
[<<label_name>>] CASE selector WHEN expression1 THEN sequence_of_statements1; WHEN expression2 THEN sequence_of_statements2; ... WHEN expressionN THEN sequence_of_statementsN; [ELSE sequence_of_statementsN+1;] Testing Conditions: IF and CASE Statements END CASE [label_name]
搜索结构的CASE语句:
[<<label_name>>] CASE WHEN search_condition1 THEN sequence_of_statements1; WHEN search_condition2 THEN sequence_of_statements2; ... WHEN search_conditionN THEN sequence_of_statementsN; [ELSE sequence_of_statementsN+1;] END CASE [label_name];
LOOP
在循环中有两种类型的EXIT可以使用
1、EXIT
LOOP IF credit_rating < 3 THEN EXIT; -- exit loop immediately END IF; END LOOP;
2、EXIT WHEN
LOOP FETCH c1 INTO ... EXIT WHEN c1%NOTFOUND; -- exit loop if condition is true ... END LOOP; CLOSE c1;
FOR LOOP循环注意事项:
The bounds of a loop range can be literals, variables, or expressions but must evaluate
to numbers. Otherwise, PL/SQL raises the predefined exception VALUE_ERROR.
循环的范围可以是文本,变量或者表达式,但是他必须可以证明为数字类型,否则PL/SQL将会抛出值错误的异常信息
当需要进行FOR LOOP的逆向循环的时候,需要使用关键字 REVERSE.
BEGIN FOR i IN REVERSE 1..3 LOOP dbms_output.put_line(i); END LOOP; END;
输出的结果为3、2、1
相关文章推荐
- 自学PL/SQL 第四讲Writing Control Structures
- Add Responsibility to USER using pl/sql
- 【PROCEDURE调优推荐】Implementing and Using the PL/SQL Profiler
- PL/SQL Transaction Control
- Saving and Displaying Photos in SQL Server using ASP.NET and FileUpload Control
- 11gr2 解决 ORA-06554: package DBMS_STANDARD must be created before using PL/SQL
- PL/SQL Developer Version Control Plug-In User’s Guide
- PL/SQL Developer启动时报错:“Control 'dxDockBrowserPanel' has no parent window"
- ORA-06554: package DBMS_STANDARD must be created before using PL/SQL
- ORACLE HANDBOOK系列之六:ODP.NET与复杂的PL/SQL数据类型(Using ODP.NET To Deal With Complex PLSQL Data Types)
- How To Load CLOB Data from a File into a CLOB column using PL/SQL
- PLS-2--25Using Parameters in PL/SQL Procedure
- LINQ to SQL (Part 5 - Binding UI using the ASP:LinqDataSource Control)
- Using of REF CURSOR in PL/SQL
- Using PL/SQL APIs as Web Services
- How to run workflow using PL/SQL
- pl/sql 与vss 集成问题:Could not activate Plug-In: Version Control Interface 1.2
- LINQ to SQL (Part 5 - Binding UI using the ASP:LinqDataSource Control)
- 【转载】LINQ to SQL (Part 5 - Binding UI using the ASP:LinqDataSource Control)
- PL/SQL启动报错:Control 'dxDockBrowserPanel' has no parent window分析及解决