oracle中的流程控制语句,主要包括选择语句和循环语句,选择语句也就是条件语句。
end if;
举个例子,用oracle自带的表emp作为基础。判断员工编号不同的两位员工,谁的名字字符更长。
DECLARE A EMP.ENAME%TYPE; B EMP.ENAME%TYPE; BEGIN SELECT EMP.ENAME INTO A FROM EMP WHERE EMP.EMPNO = 7369; SELECT EMP.ENAME INTO B FROM EMP WHERE EMP.EMPNO = 7499; IF LENGTH(A) > LENGTH(B) THEN DBMS_OUTPUT.PUT_LINE(A || '的名字长'); ELSIF LENGTH(A) > LENGTH(B) THEN DBMS_OUTPUT.PUT_LINE(B || '的名字长'); ELSIF LENGTH(A) = LENGTH(B) THEN DBMS_OUTPUT.PUT_LINE(A || '和' || B || '的名字一样长'); END IF; END;
多情况判断时可以考虑用case语句替换elsif语句,因为case简洁明了。
SQL> DECLARE 2 --求1到10之和是多少 3 I INT := 0; 4 SUMI INT := 0; 5 BEGIN 6 LOOP 7 I := I + 1; 8 SUMI := SUMI + I; 9 EXIT WHEN I = 10; 10 END LOOP; 11 DBMS_OUTPUT.PUT_LINE('1到10求和为' || SUMI); 12 END; 13 / 1到10求和为55 PL/SQL procedure successfully completed
DECLARE --求1到10之和是多少 I INT := 0; SUMI INT := 0; BEGIN WHILE I <= 9 LOOP I := I + 1; SUMI := SUMI + I; END LOOP; DBMS_OUTPUT.PUT_LINE('1到10求和为' || SUMI); END;
DECLARE --求1到10之和是多少 I INT := 0; SUMI INT := 0; a INT :=0; BEGIN FOR a IN 0 .. 9 LOOP I := I + 1; SUMI := SUMI + I; END LOOP; DBMS_OUTPUT.PUT_LINE('1到10求和为' || SUMI); END;