存储过程和函数能够放在同一个包下方便管理,如同java的package,了解了存储过程后就知道前辈是多么爽了,全都在sql里,不用像咱们sql查出来还要用转成java对象进行逻辑处理。。java
经常使用语法
- 存储过程建立CREATE OR REPLACE PROCEDURE 存储过程名(参数1 IN,参数2 OUT) is begin xxx end
- 存储过程有三种参数类型IN OUT INOUT,对应传入、传出、传入传出值。设置参数若没写具体类型则默认为IN类型
- 异常信息处理:raise 后跟异常 表示抛出 的异常,或者在异常内用 others then
- 游标cursor是最为关键的知识点,就是查询出来的结果集循环作操做,要了解它的多种定义与使用open、for循环,游标也能够设置传入参数
一、建立游标:cursor 游标名 is 结果集
二、打开游标 open 游标名
三、loop循环游标取数据 fetch 游标名 into 变量(通常 begin for 游标变量 in 游标 loop,用单个游标.属性来取数据 end loop end)
四、关闭游标 close 游标名正则表达式
- %FOUND用法,能够和游标联合使用:游标变量%FOUND,如有数据则是true,同理也有%NOTFOUND
- for xx in(select * from table ) begin 一顿操做 end 也能够达到和游标相同效果
- 分析函数keep()的用法,取同一个分组下以某个字段排序后,对指定字段取最小或最大的那个值。通常用 聚合函数| max(column1) keep (dense_rank first或last order by column2) over (partion by column3),表示按照column2排序后的首个或最后数据再取聚合函数(column1)
- row_number()over() (partition by xx order by xx) num 分组再排序,以及和自带的rownum的区别:rownum 是结果集出来后排序的必须从1开始。
- goto 一个<标签>,能跳出循环,至关于 java里的break,不过要如今外层设置标签例如**<outter>**则可直接跳转出来
- 对于数据的操做:MOD ()求余数,round四舍五入,ceil向上取整,floor向下取整,trunc截取整数部分,abs绝对值
- order by 和 decode()连用,能够将很差排序的字段设置为数字进行排序,例如order by decode(字段A,'b',1,'c',2,3),字段A若是是b就是1,c就是2.不然是3这样就至关于字段A就是1,2,3这种顺序关系。
- if a= elseif a= end if判断条件语句
- := 赋值。 如 a:=3
- aa.bb%type 数据类型为aa表的bb字段的数据类型,这坨代码是定义变量时放变量后的
- reverse的用法,1..0 reverse 从1到0反向循环
- sign(表达式)函数,若表达式小于0返回-1,等于0返回0,大于0返回1
- decode用法,decode(a,'a',1,'b',2,3)。若a等于a则返回1,等于b则返回2 不然返回3。
- 外、左、右链接 用+的写法
- 正则表达式的用法