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