DECLARE
v_q EMP.sal %type; --定义属性类型 type 若sal类型改变 v_q 也会相应改变 --定义变量v_q
BEGIN
SELECT e.SAL INTO v_q --取值放入v_q
from emp e
WHERE e.HIREDATE=TO_DATE('1981-02-20', 'yyyy-mm-dd');
if (v_q >2500)
THEN
--专门输出语句
dbms_output.put_line('A');--把输出值放在括号里
ELSE
dbms_output.put_line('B');--否则输出B
END IF;
END;
DECLARE v_w EMP%rowtype;--取满足编号为7566的所有字段,%rowtyp横条记录类型
BEGIN
SELECT *INTO v_w--取所有字段
FROM EMP e
WHERE e.EMPNO=7566;
CASE v_w.sal --case语句
WHEN 1600 THEN dbms_output.put_line('C');
WHEN 2000 THEN dbms_output.put_line('A');
WHEN 3000 THEN dbms_output.put_line('B');
ELSE dbms_output.put_line('D');
END CASE;
END;
--loop循环 控制
DECLARE
v_e NUMBER:=1;
BEGIN
loop
dbms_output.put_line(v_e);
exit WHEN v_e>100;
v_e:=v_e+1;
end loop;
END;
DECLARE --另一种写法 结果一样
v_r NUMBER:=1;
BEGIN
while v_r<100 loop
dbms_output.put_line(v_r);
exit WHEN v_r>100;
v_r:=v_r+1;
end loop;
END;
begin
for v_t in (reverse) 1..100--从1-100 reverse 倒过来100-1
loop
dbms_output.put_line(v_t);
end loop;
end;
v_exception
--异常处理
--系统异常
DECLARE --错误处理
v_y emp%rowtype;
begin
select * into v_y
from emp e
where e.empno>8000;
dbms_output.put_line(v_y.sal);
EXCEPTION
when others THEN
dbms_output.put_line(sqlerrm);--当前错误信息,系统异常
end;
--自定义异常
DECLARE
v_u EMP%rowtype;
v_exception EXCEPTION;--自定义异常
BEGIN
SELECT *INTO v_u
FROM EMP e
WHERE e.EMPNO=7839;
IF v_u.sal <8000
THEN
raise v_exception;--引发异常
END IF;
EXCEPTION
WHEN v_exception THEN
dbms_output.put_line('加工资');
END;
v_q EMP.sal %type; --定义属性类型 type 若sal类型改变 v_q 也会相应改变 --定义变量v_q
BEGIN
SELECT e.SAL INTO v_q --取值放入v_q
from emp e
WHERE e.HIREDATE=TO_DATE('1981-02-20', 'yyyy-mm-dd');
if (v_q >2500)
THEN
--专门输出语句
dbms_output.put_line('A');--把输出值放在括号里
ELSE
dbms_output.put_line('B');--否则输出B
END IF;
END;
DECLARE v_w EMP%rowtype;--取满足编号为7566的所有字段,%rowtyp横条记录类型
BEGIN
SELECT *INTO v_w--取所有字段
FROM EMP e
WHERE e.EMPNO=7566;
CASE v_w.sal --case语句
WHEN 1600 THEN dbms_output.put_line('C');
WHEN 2000 THEN dbms_output.put_line('A');
WHEN 3000 THEN dbms_output.put_line('B');
ELSE dbms_output.put_line('D');
END CASE;
END;
--loop循环 控制
DECLARE
v_e NUMBER:=1;
BEGIN
loop
dbms_output.put_line(v_e);
exit WHEN v_e>100;
v_e:=v_e+1;
end loop;
END;
DECLARE --另一种写法 结果一样
v_r NUMBER:=1;
BEGIN
while v_r<100 loop
dbms_output.put_line(v_r);
exit WHEN v_r>100;
v_r:=v_r+1;
end loop;
END;
begin
for v_t in (reverse) 1..100--从1-100 reverse 倒过来100-1
loop
dbms_output.put_line(v_t);
end loop;
end;
v_exception
--异常处理
--系统异常
DECLARE --错误处理
v_y emp%rowtype;
begin
select * into v_y
from emp e
where e.empno>8000;
dbms_output.put_line(v_y.sal);
EXCEPTION
when others THEN
dbms_output.put_line(sqlerrm);--当前错误信息,系统异常
end;
--自定义异常
DECLARE
v_u EMP%rowtype;
v_exception EXCEPTION;--自定义异常
BEGIN
SELECT *INTO v_u
FROM EMP e
WHERE e.EMPNO=7839;
IF v_u.sal <8000
THEN
raise v_exception;--引发异常
END IF;
EXCEPTION
WHEN v_exception THEN
dbms_output.put_line('加工资');
END;