控制结构在程序中就是一种程序运行的逻辑,一般情况下有顺序结构,选择结构,循环结构。PL/SQL控制结构也是由上述的3种逻辑结构组成,往往由以下几个语句来实现。
1、IF条件语句
IF语句的语法:
IF condition1 THEN
statement1;
ELSIF condition2 THEN
statement2;ELSE
statement3;END IF;
实例如下:
DECLARE
v_first_name VARCHAR2(20);
v_salary NUMBER(7,2);
BEGIN
SELECT first_name, salary INTO v_first_name, v_salary FROM employees
WHERE employee_id = &emp_id;
DBMS_OUTPUT.PUT_LINE(v_first_name||'雇员的工资是'||v_salary);
IF v_salary < 10000 THEN
DBMS_OUTPUT.PUT_LINE('工资低于10000');
ELSE
IF 10000 <= v_salary AND v_salary < 20000 THEN
DBMS_OUTPUT.PUT_LINE('工资在10000到20000之间');
ELSE
DBMS_OUTPUT.PUT_LINE('工资高于20000');
END IF;
END IF;
END;
2、CASE语句
CASE语句语法:
CASE variable_name WHEN case1 THEN statement1;
WHEN case2 THEN statement2;
...WHEN caseN-1 THEN statementN-1;
[ELSE statementN]END CASE;
实例如下:
DECLARE
grade CHAR :='B';
appraisal VARCHAR2(20);BEGIN
appraisal :=
CASE grade
WHEN 'A' THEN '优'
WHEN 'B' THEN '良'
ELSE '不及格'
END;
DBMS_OUTPUT.PUT_LINE('Grade '||grade|| ' is '||appraisal);
/*下面效果一样
grade:='A';
CASE grade
WHEN 'A' THEN appraisal :='优';
WHEN 'B' THEN appraisal :='良';
ELSE appraisal :='不及格';
END CASE;
DBMS_OUTPUT.PUT_LINE('Grade '||grade|| ' is '||appraisal);
*/END;/
3、基本循环
基本循环的语法:
LOOP
statements
EXIT [WHEN condition]END LOOP;
实例如下:
DECLARE
int NUMBER(2) :=0;
BEGIN
LOOP
int := int + 1;
DBMS_OUTPUT.PUT_LINE('int 的当前值为:'||int);
EXIT WHEN int =10;
END LOOP;
END;
4、WHILE循环
WHILE循环语法:
WHILE condition LOOP
statements;END LOOP;
实例如下:
DECLARE
x NUMBER :=1;
BEGIN
WHILE x<=10 LOOP
DBMS_OUTPUT.PUT_LINE('X的当前值为:'||x);
x:= x+1;
END LOOP;
END;
5、FOR循环
FOR循环语法:
FOR loop_variable IN [REVERSE] lower_bound..upper_bound LOOP
statements;END LOOP;
实例如下:
CREATE TABLE temp_table(num_col NUMBER);
DECLARE
V_counter NUMBER := 10;
BEGIN
INSERT INTO temp_table(num_col) VALUES (v_counter );
FOR v_counter IN 20 .. 25 LOOP
INSERT INTO temp_table (num_col ) VALUES ( v_counter );
END LOOP;
INSERT INTO temp_table(num_col) VALUES (v_counter );
FOR v_counter IN REVERSE 20 .. 25 LOOP
INSERT INTO temp_table (num_col ) VALUES ( v_counter );
END LOOP;
END ;
DROP TABLE temp_table;
此外,我们也可以在While循环中嵌套loop循环:
/*求100至110之间的素数*/
DECLARE
v_m NUMBER := 101;
v_i NUMBER;
v_n NUMBER := 0;
BEGIN
WHILE v_m < 110 LOOP
v_i := 2;
LOOP
IF mod(v_m, v_i) = 0 THEN
v_i := 0;
EXIT;
END IF;
v_i := v_i + 1;
EXIT WHEN v_i > v_m - 1;
END LOOP;
IF v_i > 0 THEN
v_n := v_n + 1;
DBMS_OUTPUT.PUT_LINE('第'|| v_n || '个素数是' || v_m);
END IF;
v_m := v_m + 2;
END LOOP;
END;
总的来说。PL/SQL的控制结构也是由一般的顺序、分支、循环三个方面的语句来控制其逻辑顺序的。通过上述的实例,我们基本上了解了每个PL/SQL控制结构的语法和作用,在本站的PL/SQL教程中,我们可以继续深入学习,把本文学到的知识运用到解决实际的问题当中去。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习