第2章PL/SQL编程基础


PL/SQL编程基础
PL/SQL简介

PL/SQL块的基础结构:
declare
定义部分——定义常量、变量、复杂数据类型、游标、用户自定义异常
begin
执行部分– PL/SQL语句和SQL语句
exception
异常处理部分–处理运行错误
end
块结束标记
编写PL/SQL语句时,执行部分是必须的,而其它两个部分是可选的。
2、PL/SQL块的类型
a、匿名块
既可以内嵌到应用程序中,也可以在交互环境中直接使用
例 :
declare
v_name varchar2(50);
begin
dbms_output.put_line(‘wwww’);
end;
b、子程序
a.过程
例:
create or replace procedure pro_name is
v_name varchar2(50);
begin
dbms_output.put_line(‘过程’);
b.函数
例:
create or replace function fun_name return varchar2 as
v_name varchar2(50);
begin
v_funvar:= “函数变量”;
dbms_output.put_line(‘函数’);
return v_funvar;
```
c.包
/包规范/
create or replace package 包名is
/包方法定义/
procedure proc_name_sal_info(id in int);
end 包名;
/包体/
create or replace package body pack_info is
/包规范中定义的方法在包体中实现/
procedure proc_name_sal_info(id in int) is
type cur_name is ref cursor;
cur_info cur_name;
cur_name_sal emp%rowtype;
begin
open cur_info for select from emp where empno=id;
loop
fetch cur_info into cur_name_sal;
exit when cur_info%notfound;
dbms_output.put_line(‘ID:’||cur_name_sal.empno|| ‘姓名:’||cur_name_sal.ename ||’工资:’ ||cur_name_sal.sal);
end loop;
close cur_info;
end;
end pack_info;
/
call测试/
call pack_info.proc_name_sal_info(7369);
/
匿名块测试/
declare
begin
pack_info.proc_name_sal_info(7369);
end;
c、触发器
/
触发器*/
create or replace trigger 触发器名称
before insert on t_dempt – 在什么之前关键字before或之后关键字after on是哪张表表名
for each row –行级触发器默认不填是语句级触发器
begin
select id_seq.nextval into :new.id from dual;
end;
3.数据类型与变量

  1. 标量变量
    指只能存入单个数值的变量
    varchar2(n)、char(n)、number(m,n)(m表示精度,表示指定数子的总位数,n表示小数点后面数字的位数)、date
    2.使用%TYPE属性
    例:
        declare
        v_loc dept.loc%type;
        begin
         select loc into v_loc from dept where deptno = 10;
        dbms_output.put_line(v_loc);
        end;