Oracle数据库之SQL基础和分支循环
Posted 敲不完的代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库之SQL基础和分支循环相关的知识,希望对你有一定的参考价值。
一、SQL基础语言
DECLARE --声明 a varchar2(10); --变量或对象 BEGIN a:=\'小明\';-- := 表示给一个变量赋值 dbms_output.put_line(a); --输出用 dbms_output.put_line() END;
二、分支
DECLARE --声明 A NUMBER(10); B NUMBER(10); BEGIN A := 2; B := 3; IF A < B THEN DBMS_OUTPUT.PUT_LINE(\'a小于b\'); ELSIF A > B THEN --注意 ELSIF 的写法 DBMS_OUTPUT.PUT_LINE(\'a大于b\'); ELSE DBMS_OUTPUT.PUT_LINE(\'a等于b\'); END IF; END;
三、循环
第一种:(loop循环)
DECLARE M NUMBER(5); BEGIN M := 5; LOOP EXIT WHEN M < 0; DBMS_OUTPUT.PUT_LINE(M); M := M - 1; END LOOP; END;
执行结果:
第二种:(while 循环)
DECLARE M NUMBER(5); BEGIN M := 5; WHILE M > 0 LOOP --while 循环 DBMS_OUTPUT.PUT_LINE(M); M := M - 1; END LOOP; END;
执行结果:
第三种:(for循环)
DECLARE BEGIN FOR N IN 1 .. 5 LOOP --for 循环只能遍历像1~5这样的有规律的数字 DBMS_OUTPUT.PUT_LINE(N); END LOOP; END;
执行结果:
四、处理异常
DECLARE M NUMBER(10); SNAME VARCHAR2(10); BEGIN M := 5; SELECT S.NAME INTO SNAME FROM Z_STUDENT S WHERE S.ID = M; DBMS_OUTPUT.PUT_LINE(\'查询结果:\' || SNAME); END;
执行结果:
然后抛出异常 exception
DECLARE M NUMBER(10); SNAME VARCHAR2(10); BEGIN M := 50; --改个不存在的值 SELECT S.NAME INTO SNAME FROM Z_STUDENT S WHERE S.ID = M; DBMS_OUTPUT.PUT_LINE(\'查询结果:\' || SNAME); EXCEPTION --抛出异常 WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(\'没有查询到数据\'); END;
执行结果:
再举个例子:
DECLARE --声明 A NUMBER(10); B NUMBER(10); NOZERO EXCEPTION; --定义nozero 为异常类型 BEGIN A := 2; B := 0; IF A = 0 OR B = 0 THEN RAISE NOZERO; --RAISE 抛出异常 END IF; IF A < B THEN DBMS_OUTPUT.PUT_LINE(\'a小于b\'); ELSIF A > B THEN --注意 ELSIF 的写法 DBMS_OUTPUT.PUT_LINE(\'a大于b\'); ELSE DBMS_OUTPUT.PUT_LINE(\'a等于b\'); END IF; EXCEPTION WHEN NOZERO THEN DBMS_OUTPUT.PUT_LINE(\'a和b都不能为0!\'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(\'其他异常!\'); END;
执行结果为:
以上是关于Oracle数据库之SQL基础和分支循环的主要内容,如果未能解决你的问题,请参考以下文章
Oracle笔记4-pl/sql-分支/循环/游标/异常/存储/调用/触发器