1.if
DECLARE
v_count NUMBER (10) := 0; --定义计数器变量
v_empno NUMBER (4) := 7888; --定义员工编号
BEGIN
SELECT COUNT (1) --首先查询指定的员工编号是否存在
INTO v_count
FROM emp
WHERE empno = v_empno;
--使用IF语句判断,如果员工编号不存在,结果为0
IF v_count = 0
THEN
--则执行INSERT语句,插入新的员工记录
INSERT INTO emp
(empno, ename, job, hiredate, sal, deptno
)
VALUES (v_empno, '张三', '经理', TRUNC (SYSDATE), 1000, 20
);
END IF;
--向数据库提交更改
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (SQLERRM); --输出异常信息
END;
2.if elseif else
DECLARE
v_character CHAR(1) :=&tmpVar; --定义替换变量
BEGIN
IF v_character = 'A' --判断字符是否为'A',如果不是,则跳到下一个ELSIF
THEN
DBMS_OUTPUT.put_line ('当前输出字符串:' || v_character);
ELSIF v_character = 'B' --判断字符是否为'B',如果不是,则跳到下一个ELSIF
THEN
DBMS_OUTPUT.put_line ('当前输出字符串:' || v_character);
ELSIF v_character = 'C' --判断字符是否为'C',如果不是,则跳到下一个ELSIF
THEN
DBMS_OUTPUT.put_line ('当前输出字符串:' || v_character);
ELSIF v_character = 'D' --判断字符是否为'D',如果不是,则跳到ELSE语句
THEN
DBMS_OUTPUT.put_line ('当前输出字符串:' || v_character);
ELSE
DBMS_OUTPUT.put_line ('不是A-D之间的字符');
END IF;
END;
3.case
/* Formatted on 2011/08/16 15:59 (Formatter Plus v4.8.8) */
DECLARE
v_job VARCHAR2 (30); --定义保存CASE选择器的字符型变量
v_empno NUMBER (4) := &empno; --定义用来查询员工的员工编号
BEGIN
SELECT job --获取选择器v_job的值
INTO v_job
FROM emp
WHERE empno = v_empno;
--当指定了CASE的选择器为v_job后,所有的WHEN子句的类型必须匹配为VARCHAR2类型
CASE v_job
WHEN 'CLERK'
THEN
UPDATE emp
SET sal = sal * (1 + 0.15)
WHERE empno = v_empno;
DBMS_OUTPUT.put_line ('为普通职员加薪15%');
WHEN 'ANALYST'
THEN
UPDATE emp
SET sal = sal * (1 + 0.18)
WHERE empno = v_empno;
DBMS_OUTPUT.put_line ('为分析人员加薪18%');
WHEN 'MANAGER'
THEN
UPDATE emp
SET sal = sal * (1 + 0.20)
WHERE empno = v_empno;
DBMS_OUTPUT.put_line ('为管理人员加薪20%');
WHEN 'SALESMAN'
THEN
UPDATE emp
SET sal = sal * (1 + 0.22)
WHERE empno = v_empno;
DBMS_OUTPUT.put_line ('为销售人员加薪22%');
ELSE --使用ELSE语句显示信息
DBMS_OUTPUT.put_line ('员工职级不在加薪的行列!');
END CASE; --终止CASE语句块
END;
4.LOOP
DECLARE
v_count NUMBER (2) := 0; --定义循环计数变量
BEGIN
LOOP --开始执行循环
v_count := v_count + 1; --循环计数器加1
--打印字符信息
DBMS_OUTPUT.put_line ('行' || v_count || ':Hello PL/SQL!');
--如果计数条件为10,则退出循环
IF v_count = 10
THEN
EXIT; --使用EXIT退出循环
END IF;
END LOOP;
--循环退出后,将执行这条语句
DBMS_OUTPUT.put_line ('循环已经退出了!');
END;
DECLARE
v_count NUMBER (2) := 0; --定义循环计数变量
BEGIN
LOOP --开始执行循环
v_count := v_count + 1; --循环计数器加1
--打印字符信息
DBMS_OUTPUT.put_line ('行' || v_count || ':Hello PL/SQL!');
--如果计数条件为10,则退出循环
EXIT WHEN v_count=10;
END LOOP;
--循环退出后,将执行这条语句
DBMS_OUTPUT.put_line ('循环已经退出了!');
END;
5.while loop
/* Formatted on 2011/08/17 09:11 (Formatter Plus v4.8.8) */
DECLARE
counter NUMBER := 1; --定义计数器变量
BEGIN
WHILE (counter < 10) --判断循环的条件为counter<10
LOOP
DBMS_OUTPUT.put_line ('计数器 [' || counter || '].');
IF counter >= 1 --如果循环计数器大于等于1
THEN
counter := counter + 1; --将循环计数器加1
END IF;
END LOOP;
END;
/
6.for loop
/* Formatted on 2011/08/17 20:47 (Formatter Plus v4.8.8) */
DECLARE
v_total INTEGER := 0; --循环累计汇总数字
BEGIN
FOR i IN 1 .. 3 --使用FOR循环开始循环计数
LOOP
v_total := v_total + 1; --汇总累加
DBMS_OUTPUT.put_line ('循环计数器值:' || i);
END LOOP;
--输出循环结果值
DBMS_OUTPUT.put_line ('循环总计:' || v_total);
END;