Oracle数据库之SQL基础和分支循环

时间:2023-03-08 16:30:18
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; 执行结果:

Oracle数据库之SQL基础和分支循环


第二种:(while 循环)

DECLARE

  M NUMBER(5);

BEGIN
M := 5; WHILE M > 0 LOOP --while 循环
DBMS_OUTPUT.PUT_LINE(M);
M := M - 1;
END LOOP; END;
执行结果:

Oracle数据库之SQL基础和分支循环


第三种:(for循环)

DECLARE

BEGIN

  FOR N IN 1 .. 5 LOOP
--for 循环只能遍历像1~5这样的有规律的数字
DBMS_OUTPUT.PUT_LINE(N);
END LOOP; END;
执行结果:

Oracle数据库之SQL基础和分支循环


四、处理异常

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; 执行结果:

Oracle数据库之SQL基础和分支循环


然后抛出异常  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; 执行结果:

Oracle数据库之SQL基础和分支循环


再举个例子:

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基础和分支循环