[独孤九剑]Oracle知识点梳理(六)数据库经常使用对象之Procedure、function、Sequence

本系列连接导航:

[独孤九剑]Oracle知识点梳理(一)表空间、用户html

[独孤九剑]Oracle知识点梳理(二)数据库的链接数据库

[独孤九剑]Oracle知识点梳理(三)导入、导出缓存

[独孤九剑]Oracle知识点梳理(四)SQL语句之DML和DDL安全

[独孤九剑]Oracle知识点梳理(五)数据库经常使用对象之Table、View函数

[独孤九剑]Oracle知识点梳理(六)数据库经常使用对象之Procedure、function、Sequence测试

[独孤九剑]Oracle知识点梳理(七)数据库经常使用对象之Cursorspa

[独孤九剑]Oracle知识点梳理(八)常见Exception code

[独孤九剑]Oracle知识点梳理(九)数据库经常使用对象之packagehtm

[独孤九剑]Oracle知识点梳理(十)%type与%rowtype及经常使用函数对象

5.三、procedure的操做

5.3.一、建立存储过程

 1 create or replace procedure proc_GetPerson(argName in varchar2,argMsg out varchar2,argTable out pkg.RefCur)
                                  --参数,不须要定义长度 2 as 3   vName varchar2(64);-- 定义变量,要设置长度 4 begin 5   vName:=argName; --赋值,每条语句要以分号结束 6   open pke.RefCur is select * from person where name like vName||'%';--将查询结果记录到返回游标中 7   --固然,还能够进行其余复杂的判断,转换等操做 8   argMsg:='正常'; 9   commit; 10 11   Exception 12     when others then argMsg='异常'; 13       rollback; --若是以前执行的是事务性的语句,有必要保证数据安全 14 end proc_GetPerson;

5.3.二、删除存储过程

drop procedure pro_GetPerson;

5.四、function的操做

5.4.一、建立函数

  • 带in参数
1 create or replace function fun_GetPersonName(argName in varchar2,argGender in varchar2) return varchar2
2 as
3   Result varchar2(64); --定义变量 
4 begin
5   select name into Result from person where name =argName and gender=argGender and rownum=1;
6   return Result;--返回值 
8 end fun_GetPersonName;
  • 带out参数
1 create or replace function fun_GetPersonName(argName in varchar2,argGender out varchar2) return varchar2
2 as
3   Result varchar2(64); --定义变量 
4 begin
5   select name,gender into Result,argGender from person where name =argName and rownum=1;
6   return Result;--返回值
7 end fun_GetPersonName;

5.4.二、删除函数

drop function fun_GetPersonName;

5.五、sequence的操做

  在Oracle中sequence就是序号,每次取的时候它会自动增长;sequence与表没有关系。
  首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。

5.5.一、建立序列

1 create sequence seqPersonID
2   increment by 1 --每次加1
3   start with 1 --序列从1开始计数
4   nomaxvalue --不设置最大值
5   nocycle --一致累加,不循环
6   cache 10; 设置缓存cache个序列,若是系统down掉了,或者其余状况会致使序列不连续,
7   --nocache; --不是最缓存

5.5.二、获得Sequence的值

  currVal:返回sequence的当前值
  nextVal:返回sequence下一个值

1 select seqPersonID.CurrVal from dual; --获得序列的当前值,必须在调用过NextVal以后才能使用,不然报错
2 select seqPersonID.NextVal from dual; --获得序列的下一个值,若是是第一次使用,则返回建立时设置的初始值

  在Sql语句中可使用sequence的地方: 

  1. 不包含子查询、snapshot、VIEW的 SELECT 语句
  2. INSERT语句的子查询中
  3. INSERT语句的values中
  4. UPDATE 的 SET中

  如在插入语句中

insert into person(id,name)values(seqPersonID.Nextval,'sequence 插入测试');

5.5.三、修改序列

  能够修改出start以外的全部sequence参数,若是想修改start的值,必须先drop 再从新建立

alter sequence seqPersonID maxValue 99999999;

5.5.四、删除序列

drop sequence seqPersonID;
相关文章
相关标签/搜索