oracle第三波


A:PLSQL
概念:
是一种在数据库里面的脚本代码,是oracle对sql语言的过程化拓展,简单,高效,灵活,实用.
语法:
[declare
//声明变量
]
begin
//代码逻辑
[exception
//异常处理
]
end;//结束
a:变量
1:用冒号等于号(":=")进行赋值(最普通赋值)

2:select 列名 into 变量名 from 表名 where 条件(赋给一行值,一列值)

b:属性类型
1:%TYPE 引用类型
2:表名%rowtype 记录型,标识某个表的行记录类型

c:异常
1:预定义异常
当pl/sql程序违反oracle 规则或超越系统限制时隐式引发

2:用户定义异常
用户可以再pl/sql 块中
语法:
exception 
when 异常类型 then 异常逻辑处理
end;
d:条件判断
1:if 判断条件 then 业务逻辑运算
elsif 判断条件  then 业务逻辑运算
elsif...
else 业务逻辑运算 //最后一个为else
  end if; //要有结束符

e:循环
1:无条件循环
语法:
loop
//循环语句
end loop;

2:有条件循环
语法:
while  
//条件
loop 
//循环语句
end loop;//分号别忘丢

3:for循环
语法:
for   
//变量名
in
//循环条件
loop
//直接输出
end loop;

B:游标(处理多行数据)
概念:
游标就是系统为用户开设的一个数据缓冲区,存放sql语句的执行结果,可以理解成为pl/sql中的结果集.
a:语法结构
1:在声明区声明游标
语法:
cursor 游标名称 is sql语句

2:使用游标
语法:
open 游标名称

loop

fetch 游标名称 into 变量

exit when 游标名称%notfound //notfound 假, found 真. 一个属性

end loop;

close 游标名称  //关游标

b:带参数的游标
在声明区声明游标时 加上参数名和类型,在下面使用时直接在下面加括号调用

c:for循环提取游标  带参数的游标
语法:
cursor 游标名称(参数名和类型) is sql语句  //声明游标
begin
for 表单内的一行数据 in 游标名
loop
//输出语句
end loop;
end;


C:存储
a:存储函数
概念:
存储函数就是自定义函数,可以接收一个或多个参数,返回一个结果,在函数内,可以使用pl/sql进行逻辑处理,一般用于sql语句中
创建修改
语法:
create [or replace(如果有同样的名字,则自动创建另一个名字)] function 函数名称(参数名称 参数类型 ...)
return 结果变量数据类型
is
//声明变量
begin
//sql语句  逻辑部分
return 结果变量
end;

b:存储过程
概念:
存储过程是被命名的pl/sql块,存储于数据库中,是数据库对象的一种,应用程序可以调用存储过程,执行相应的逻辑.

1:与存储函数的区别
存储函数中有返回值,且必须返回;存储过程没有返回值,可以通过传出参数返回多个值.
存储函数可以在select 语句中直接使用而存储过程不能,过程多数被应用程序所调用
存储函数一般都是封装一个查询结果,而存储过程一般都封装一段事务代码.
2:语法:
create [or replace]procedure 存储过程名称(参数名,参数类型...)
is/as
变量声明部分
begin
逻辑部分 sql语句
end;
注意:参数只指定类型,不指定长度.

3:过程参数的三种模式
in 传入参数(默认)
out 传出参数 主要返回程序运行结果
in out 传入传出参数
4:调用不带传出的存储过程
call 存储过程名(跟参数对应的数据)

begin
存储过程名(跟参数对应的数据)
end;
5:调用带传出参数的存储过程
declare
声明变量
begin
业务逻辑 sql语句
dbms_output.put_line(声明的变量);
end;
注意:带传出和不带传出的调用,前提都得先创建存储过程


D:触发器
概念:
数据库触发器是一个与表相关联的.存储的pl/sql程序,每当一个特定的数据操作语句(insert,update,delete)
a:应用场景
1:数据确认
2:实施复杂的安全性检查
3:做审计,跟踪表上所做的数据操作等
4:数据的备份和同步
b:触发器分类
1:前置触发器(before)
2:后置触发器(after)
注意:行级触发器  语句触发器 前置与后置都可以是任意的一种
行级触发器就是每次影响一行触发一次,100行就是100次
语句触发器就是每次影响一段语句触发一次.
c:创建触发器的语法
create [] trigger 触发器名
before | aeter
[delete][[or] insert][[or]update [of 列名]]
on 表名
[for each row][where(条件)]
declare
声明变量
begin
plsql块 业务逻辑
end;
[for each row]作用是标注此触发器是行级触发器还是语句触发器












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值