Oracle 学习总结
学习一周oracle数据库的一些总结,主要是几种常用函数的写法和区别
Oracle数据库
- 游标
写法1(显式游标):
declare cursor 游标名 is sql语句(查询出来的是一列或者多列数据)
变量名 属性%Rowtype -- 用于接收游标内容
Begin
Open 游标名; -- 打开游标
Loop -- 进入循环语句
Fetch 游标名 into 变量名; -- 把游标赋值给变量
Exit when 游标%notfound; -- 当游标没有影响到任何语句时 退出
Dbsm_output.put_line(变量名.列名); -- 获取到数据
End loop;
Close 游标;
End;
写法2(循环游标):
declare cursor 游标名 is sql语句(查询出来的是一列或者多列数据)
Begin
For 查询变量(emprow) in 游标名;
Loop
Dbsm_output.put_line(emprow.列名); -- 获取到数据
End loop;
End;
游标分显式游标,隐式游标,循环游标。
隐式游标指 %isopen/%found/%notfound/%rowcount;
总结:游标用于显示一组数据,也可以对sql语句的update和insert进行检测是否执行成功。
- 存储过程
写法:
Create [or replace] procedure 存储过程名[(可选有参无参,可选输入输出)]
As/is -- 使用as 或 is
局部变量申明
Begin
[执行语句]
[exception]
[异常处理语句]
End [过程名];
------调用------
Call 过程名.
写在plsql语句中则直接写过程名调用。
总结:类似于java中的封装思想,把特定的处理方式打包,作为一个可调用的方法存放起来。
- 函数
写法:
Create [or replace] function函数名[(可选有参无参)] return 返回类型 ---返回属性
As/is -- 使用as 或 is
局部变量申明
Begin
[执行语句]
Return 返回值;
[exception]
[异常处理语句]
End;
------调用------
在sql语句中调用
Eq: select * from stuInfo where stuid= 函数名(值);
在plsql中调用
Declare
Val int:=100;
Begin
Val:=函数名(); --- 带返回值,可直接接收 赋值
Dbms_output.put_line(val);
End;
总结:函数更适用于带返回值的plsql过程。但是他可以返回整列数据 只能返回单条数据。
过程和函数 是 PLSQL的两种类型的存储过程。
- 触发器
写法:
Create trigger 触发器名
Before/after/instead of --before在sql执行之前 after在此之后 instead of代替仅视图可用
Insert [or update or delete] --触发事件 可一个或者多个
On 表/视图 -- 为谁建立触发器
[for each row] ---行级触发 不写默认语句级触发 语句级触发不能用 :new 和 :old
[when (触发条件)] --只有行级触发才能指定触发条件
[declare
变量名 属性]
Begin
触发的事件(方法体)
End;
总结: 可以在sql更新时对数据进行判断 结合commit和rollback可以使数据的修改更严谨。
游标:cursor 存储过程:procedure
函数:function xx return 触发器:trigger

浙公网安备 33010602011771号