第一章 PLSQL简介
-什么是PLSQL程序
(Procedure Language/SQL)
PLSQL是Oracle对sql语言的过程化扩展
----指在SQL命令语言中增加了过程处理语句(如分值、循环等),
----使SQL语言具有过程处理能力(PLSQL是面向过程的语言)
---特点:命令式语言
SQL语言-》数据操纵能力+过程语言-》数据处理能力
面向过程但更简单、高效、灵活、使用
----不同数据库的SQL扩展
Oracle:PLSQL
DB2:SQL/PL
SQL Server:Transac-SQL(T-SQL)
PLSQL的程序结构
declare
说明部分(变量说明、光标申明、例外说明)
begin
语句序列(DML语句)
exception
例外处理语句
end;
/
第二章 PLSQL基础语法
1定义基本类型
--类型:char,varchar2,date,number,boolean,long
--举例:var1 char(15);
married boolean:= true;
psal number(7,2);
2.引用型变量和记录型变量
---引用型变量
---举例:my_name emp.ename&type;
----记录型变量
----举例:emp_rec emp%rowtype;
----记录型变量分量的引用
emp_rec.ename:='ADAMA';
3.if语句的使用
IF 条件 THEN 语句1;
语句2;
END IF;
IF 条件 THEN 语句序列1;
ESLE 语句序列2;
END IF;
IF 条件 THEN 语句;
ELSIF 语句 THEN 语句;
ELSE 语句
END IF;
--判断用户从键盘输入的数字
1、如何使用if语句
2、接收一个键盘输入(字符串)
例子:
set serveroutput on
accept num prompt '请输入一个数字';
declare
pnum number:=#
begin
if pnum=0 then dbms_output.put_line('请你输入数字0');
elsif pnum = 1 then dbms_output.put_line('您输入的是1’);
elsif pnum = 2 then dbms_output.put_line(‘您输入的是2 ‘);
else dbms.output.put_line(‘其他数字’);
end if;
end;
/
4.循环语句的使用
WHILE total <= 25000 LOOP
...
total := total + salary;
END LOOP;
Loop
EXIT[when 条件];
...
End Loop;
(这种方法控制光标比较简单)
FOR I in 1...3 LOOP
语句序列;
END LOOP;
例子:
declare
pnum number:=1;
begin
for pnum in 1...10 loop
dbms_output.put_line(pnum);
end loop;
end;
/
第三章 光标(游标)
1.光标的引入
--就是一个结果集(Result Set)
2.光标的语法
-- cursor 光标名 [(参数名 数据类型[,参数名 数据类型]...)]
is select 语句;
例子:cursor c1 is select ename from emp ;
a.从光标中取值
--打开光标:open c1; (打开光标执行查询)
--关闭光标:close c1;(关闭游标释放资源)
--取一行光标的值:-fetch c1 into pename;(取一行到变量中)
1.光标的属性
%found %notfound
3.实例:员工涨薪
commit
对于oracle,默认的事务隔离级别是read committed
事务的ACID 原子性、一致性、隔离性、持久性
4.光标的属性和光标数的限制
1.光标的属性:
%found %notfound
%isopen 判断光标是否打开
%rowcount 影响的行数
2.光标的限制:默认情况下,能打开300个光标
修改光标之 的限制
alter system set open_ursors=400 scope=both;
scope的取值:both(),memory(当前文件),spfile(数据需要重启,参数文件)
5.带参数的光标
-- cursor 光标名 [(参数名 数据类型[,参数名 数据类型]...)]
is select 语句;
第四章 系统例外
1.概念和系统例外
2.no_data_found
3.too_many_rows
4.zero_divide
5.value_error
6.自定义例外
第五章 案例集锦
1.运用瀑布模型完成PLSQL程序的设计
2.案例:统计每年入职的员工人数
3.案例:员工涨工资问题
4.案例:涉及两张表的员工涨工资问题