PL/SQL序列

 
    序列是Oracle 9i提供的用于按照设定的规则自动产生数据的方案对象。在某些数据表的结构中,有些字段需要这种特性。比如,对于某个学生数据表的学号关键字段,用户可以希望在录入数据时,能够自动在上一个记录的学号字段上自动加1等。由于Oracle 9i提供的16种基本数据类型并没有这样的功能,可以通过序列方案对象来实现。

序列的创建

    下面介绍在【企业管理器】中如何创建序列。
    (1)在【企倒芾砥鳌恐醒≡瘛緈yoracle.mynet】/【方案】/【序列】选项,单击鼠标右键,在出现的快捷菜单里选择【创建】选项,如图9.48所示。

    (2)出现如图9.49所示的创建序列的【一般信息】选项卡。
    在【名称】文本框里输入待定义的序列的名称“TEMPSEQUENCE”。
    在【方案】下拉列表框里选择序列所属的用户名“SCOTT”。
    序列【类型】参数有两个选项。若选择【升序】单选钮,则表示将创建从初始值向最大值递增的序列,这是创建序列时的默认设置;若选择【降序】单选钮,则表示将创建从初始值向最小值递减的序列。
    对【值】可以进行设置的参数如下。
    在【最小值】文本框里设置序列允许的最小值。创建序列时该字段最初为空。如果单击【创建】按钮时该字段为空,则对升序序列使用默认值 1,而对降序序列使用默认值 -1026。
    在【最大值】文本框里设置序列允许的最大值。创建序列时该字段最初为空。如果单击【创建】按钮后该字段为空,则将对升序序列使用默认值 1027,而对降序序列使用默认值-1。
    在【时间间隔】文本框里设置递增序列递增的间隔数值(升序序列)或递减序列递减的间隔数值(降序序列)。创建序列时该字段最初为空,如果单击【创建】按钮后该字段为空,将使用默认值1,该字段只能为正整数。
    在【初始值】文本框里设置序列的起始值。如果单击【创建】按钮后该字段为空,对升序序列将使用该序列默认的最小值,对降序序列将使用该序列默认的最大值。
    对【选项】可以设置的参数如下。
    若选择【循环值】复选框,则表示指定在达到序列最小值或最大值之后,序列应继续生成值。对升序序列来说,在达到最大值后将生成最小值。对降序序列来说,在达到最小值后将生成最大值。如果未选择该复选框,序列将在达到最小值或最大值后停止生成任何值。默认情况下是未选择状态。
    若选择【排序值】复选框,则指定序列号要按请求次序生成,默认情况下是未选择状态。
    在【高速缓存】中设置由数据库预分配并存储的值的数目参数。若选择【默认值】单选钮,则表示将设置默认值为 20,默认情况下选择此选项;若选择【无高速缓存】单选钮,则表示指定不预分配序列值;若选择【大小】单选钮,则表示在文本框里输入可接受的值,最小值为2,对循环序列来说,该值必须小于循环中值的个数。如果序列能够生成的值数的上限小于高速缓存大小,则高速缓存大小将自动改换为该上限数。
    完成设置后单击按钮。
    (3)成功创建序列后,出现如图9.50所示界面。单击“确定”按钮。

    (3)读者也可以在【SQLPlus Worksheet】中执行下列SQL程序创建序列。
    ―――――――――――――――――――――――――――――――――――――
    CREATE SEQUENCE "SCOTT"."TEMPSEQUENCE"
        INCREMENT BY 1 START WITH 1
        MAXVALUE 1.0E28 MINVALUE 1
        NOCYCLE CACHE 20 NOORDER
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章\ createsequence.sql。

序列的使用

    下面介绍在向数据表中插入数据时如何使用序列。
    (1)首先为实例建立一个数据表“SCOTT.SEQUENCE_TABLE”,为简化起见,该数据表仅包含一个类型为“NUMBER”的数据列“NO”。
    在如图9.51所示的创建表的【一般信息】选项卡中进行如下设置。
    在【名称】文本框中输入“SEQUENCE_TABLE”。
    在【方案】下拉列表框中选择“SCOTT”。
    在【表空间】下拉列表框中选择“USERS”。
    在【名称】单元格中输入“NO”,在【数据类型】下拉列表框单元格中选择“NUMBER”。
    完成设置后单击按钮。

    (2)读者也可以在【SQLPlus Worksheet】中执行下列SQL代码创建数据表“SCOTT.SEQUENCE_TABLE”。
    ―――――――――――――――――――――――――――――――――――――
    CREATE TABLE "SCOTT"."SEQUENCE_TABLE" ("NO" NUMBER(10) NOT NULL)
        TABLESPACE "USERS"
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章\ createsequencetable.sql。
    (3)在插入新的记录时,使用刚创建的“TEMPSEQUENCE”序列来自动产生“NO”数据列的值。在【SQLPlus Worksheet】里执行下面的SQL代码,执行的结果如图9.52所示。
    ―――――――――――――――――――――――――――――――――――――
    INSERT INTO SCOTT.SEQUENCE_TABLE(NO)
    VALUES(SCOTT.TEMPSEQUENCE.NEXTVAL);
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章\ insertsequencetable.sql。
    “SCOTT.TEMPSEQUENCE.NEXTVAL”表分配下一个惟一的、可用的序列号。
    执行“SCOTT.TEMPSEQUENCE.NEXTVAL”后,可以使用“SCOTT.TEMPSEQUENCE. CURRVAL”来标识上一个已经存储的序列值。
    (4)在【SQLPlus Worksheet】中可以执行查询数据表“SCOTT.SEQUENCE_TABLE”数据的语句。执行结果如图9.53所示,表明序列“SCOTT.SEQUENCE”产生的值已经成功录入数据表中。
    ―――――――――――――――――――――――――――――――――――――
    select * from scott.sequence_table;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章\ selectsequencetable.sql。

序列的删除

    下面介绍在【企业管理器】中如何删除序列。
    (1)在创建好的序列“SEQUENCE1”上用单击鼠标右键,在出现的快捷菜单里选择【移去】选项,如图9.54所示。

    (2)出现如图9.55所示的【删除序列确认】界面,单击按钮。

时间: 2024-09-29 04:00:56

PL/SQL序列的相关文章

PL/SQL DEVELOPER 6对象比较功能说明(原创)

比较|对象|原创 PL/SQL DEVELOPER 6对象比较功能说明(原创)   PL/SQL DEVELOPER 6的对象比较功能非常强大与实用,对于开发人员来说是一个必备的工具,主要有以下用途: 检查两个不同数据库间某个用户下所有对象的不同信息 自动生成用来匹配的SQL脚本 常用于开发数据库与生成数据库对比或者新版数据库与旧数据库   下面我将全面介绍PL/SQL DEVELOPER 6对象比较功能的操作步骤: 1.打开窗口 打开Tools/Compare User Objects-菜单,

PL/SQL dev使用指南

1.PLSQL DEV 与oracle instant client 连接配置: Oracle Instant client 是oracle提供的简便客户端, 支持多种平台. 包括如下内容: Instant client Package - Basic 运行OCI, OCCI, 和JDBC-OCI应用程序需要的所有文件. Instant client Package - Basic Lite: 只包含英语错误信息, 只支持unicode, ascii, 西欧字符集. Instant client

《Oracle PL/SQL程序设计(第5版)》一一1.4 关于PL/SQL的版本

1.4 关于PL/SQL的版本 Oracle PL/SQL程序设计(第5版) 每个版本的Oracle数据库都有其对应的PL/SQL版本.只要我们使用的是最新版的PL/SQL,就会有更多的功能供我们使用.作为PL/SQL程序员的最大挑战就是"紧跟".我们不需要不断地自学每个版本中的新特性─学会使用它们,尤其在我们自己的应用程序中该如何使用,确定有些新技术尤其有用,我们应该利用这些新技术修改已有的应用程序. 表1-1总结了数据库中每一版(过去的和当前的)PL/SQL的主要成员(注意在早期的

[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)

原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七:   程序包的创建与应用(聪明在于学习,天才在于积累!) --通过知识共享树立个人品牌.     继上七篇:            [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)            [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,

《Oracle PL/SQL程序设计(第5版)》一一2.1 在数据库中导航

2.1 在数据库中导航 Oracle PL/SQL程序设计(第5版)一旦你决定使用PL/SQL进行开发,那你就不可避免的要和Oracle数据库的内容打交道.因此,要求PL/SQL程序员知道该如何在Oracle数据库中(也就是你的代码要运行的地方)"逛逛"也不足为过.在开发过程中,你会需要检查数据库里面的数据结构(比如表.列.序列.用户自定义类型等),当然还有那些你将要调用的已有的存储过程.你可能还需要知道表中实际内容(比如列.约束等). 你可以使用两种不同方法在数据库里导航. 1. 使

Oracle 数据库11g新特性之高效 PL/SQL 编码

Oracle 数据库11g新特性之高效 PL/SQL 编码 转自:http://space.itpub.net/1384/viewspace-217959 自推出以来,PL/SQL 就一直是在 Oracle 数据库中编程的首选语言.经过一段时间的发展,我们看到,由于该语言可以实现越来越多需要较少编码的功能,它已经演变为一个综合的开发平台.Oracle 数据库 11g使得 PL/SQL 编码对程序员更加高效.在本文中,您将通过某些示例简单了解这个新功能. 复合触发器 请考虑一个宾馆数据库:宾馆房间

Oracle数据库之PL/SQL触发器

1. 介绍 触发器(trigger)是数据库提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它执行.触发器经常用于加强数据的完整性约束和业务规则等. ORACLE触发器有三种类型,分别是:DML触发器.替代触发器和系统触发器. DML触发器 顾名思义,DML触发器是由DML语句触发的.例如数据库的INSERT.UPDATE.D

【PL/SQL】TOM 的 show_space()

只适用于非ASSM: create or replace procedure show_space ( p_segname in varchar2, p_owner in varchar2 default user, p_type in varchar2 default 'TABLE' ) as l_free_blks number; l_total_blocks number; l_total_bytes number; l_unused_blocks number; l_unused_byt

PL/SQL DEVELOPER 6.0.5 发布了

March 14, 2005 - Version 6.0.5 releasedEnhancements Insert Template context menu would hide first item and add dummy item Insert Template did not show subfolders Connection preferences in registry (Logon section) did not work Projects: progress while