Oracle 学习总结

学习一周oracle数据库的一些总结,主要是几种常用函数的写法和区别

Oracle数据库

  1. 游标

写法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进行检测是否执行成功。

  1. 存储过程

写法:

Create [or replace] procedure 存储过程名[(可选有参无参,可选输入输出)]

As/is        -- 使用as 或 is

局部变量申明

Begin

 [执行语句]

 [exception]

  [异常处理语句]

End [过程名];

------调用------

Call 过程名.

写在plsql语句中则直接写过程名调用。

总结:类似于java中的封装思想,把特定的处理方式打包,作为一个可调用的方法存放起来。

 

  1. 函数

写法:

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的两种类型的存储过程。

  1. 触发器

写法:

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

 

posted @ 2018-09-06 20:46  来瓶可乐啊  阅读(686)  评论(1)    收藏  举报