本系列链接导航:

[独孤九剑]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、创建存储过程

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

5.3.2、删除存储过程

drop procedure pro_GetPerson;

5.4、function的操作

5.4.1、创建函数

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

5.4.2、删除函数

drop function fun_GetPersonName;

5.5、sequence的操作

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

5.5.1、创建序列

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

5.5.2、得到Sequence的值

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

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

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

alter sequence seqPersonID maxValue 99999999;

5.5.4、删除序列

drop sequence seqPersonID;

[独孤九剑]Oracle知识点梳理(六)数据库常用对象之Procedure、function、Sequence的更多相关文章

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

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

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

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

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

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

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

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

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

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

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

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

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

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

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

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

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

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

随机推荐

  1. pyhton3 configparser模块

    1 #!/usr/bin/env python 2 # coding=utf-8 3 __author__ = 'Luzhuo' 4 __date__ = '2017/5/26' 5 # config ...

  2. loadrunder之脚本篇——Run-time Settings之Pacing

      As soon as the previous iteration ends 前一个迭代一结束就尽可能快的开始新一轮的迭代   After the previous iteration ends ...

  3. 每天一个Linux命令(45)lsof命令

        lsof命令用于查看你进程打开的文件,端口(TCP.UDP),找回/恢复删除的文件,打开文件的进程.     (1)用法:     用法:  lsof  [参数]  [文件]     (2)功 ...

  4. Python自然语言处理 - 系列三

    有监督分类过程 ![enter image description here][1]例子:涉及一个特征器,给定一个姓名分析出是男性名字还是女性名字 分析:男性和女性的名字有一些鲜明的特点.以a,e 和 ...

  5. vue项目的webpack设置请求模拟数据的接口方法

    最近在跟着视频写饿了吗vue项目,其中模拟数据由于webpack版本变化,跟视频中不一致,下方博客有解决方案,其实视频里面的还能看懂,现在webpack的服务都在插件包里了,好难找. 请参考:http ...

  6. verilog中一些基本的门电路如pmos和nmos等

    最近在分析波形的时候,发现某个PAD模型的行为与想象的不一致,就进入stdcell里面看了下,主要是pmos和nmos相关的东西,暂列如下: 开关级基元14种 是实际的MOS关的抽象表示,分电阻型(前 ...

  7. Git常见命令整理

    Git常见命令整理 + 注释 git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 gi ...

  8. 黑色CSS3立体动画菜单

    在线演示 本地下载

  9. 20145230《java程序设计》第五次实验报告

    20145230实验五 Java网络编程及安全 实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验步骤 本次实验我负责编写客户端代码的编写,以下是我实验进行的步骤: ...

  10. Kubernetes pod网络解析

    在Kubernetes中,会为每一个pod分配一个IP地址,pod内的所有容器都共享这个pod的network namespace,彼此之间使用localhost通信. 那么pod内所有容器间的网络是 ...