当前位置:首页 > 数据库 > Oracle

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

本系列链接导航:

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

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

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

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

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

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

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

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

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

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

5.3、procedure的操作

5.3.1、创建存储过程

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

5.3.2、删除存储过程

            drop
            procedure pro_GetPerson;

5.4、function的操作

5.4.1、创建函数

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

5.4.2、删除函数

            drop
            function fun_GetPersonName;

5.5、sequence的操作

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

5.5.1、创建序列

            1
            create
             sequence seqPersonID

            2   increment by1--每次加13   start with1--序列从1开始计数4   nomaxvalue --不设置最大值5   nocycle --一致累加,不循环6   cache 10; 设置缓存cache个序列,如果系统down掉了,或者其他情况会导致序列不连续,
7--nocache; --不是最缓存

5.5.2、得到Sequence的值

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

            1
            select seqPersonID.CurrVal from dual; --得到序列的当前值,必须在调用过NextVal之后才能使用,否则报错2select 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.3、修改序列

  可以修改出start之外的所有sequence参数,如果想修改start的值,必须先drop 再重新创建

            alter sequence seqPersonID maxValue 99999999;

5.5.4、删除序列

            drop sequence seqPersonID;

 

原文:http://www.cnblogs.com/cloud915/p/4340693.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐