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