ORACLE单据序列的概念及应用 V1[1].1

合集下载

oracle中select中的nextval用法

oracle中select中的nextval用法

一、什么是Oracle中的nextval函数?在Oracle数据库中,nextval是一个用于获取序列(sequence)下一个值的函数。

序列是Oracle数据库中一个自增的数值序列。

在实际应用中,我们经常需要使用自增的序列来作为表的主键或者其他唯一标识。

而nextval函数就是用来获取这个序列的下一个值的。

二、nextval函数的使用方法1. 创建序列在使用nextval函数之前,我们需要先创建一个序列。

创建序列的语法如下:```sqlCREATE SEQUENCE sequence_nameSTART WITH start_valueINCREMENT BY increment_value;```其中,sequence_name是序列的名称,start_value是序列的起始值,increment_value是序列的递增步长。

2. 使用nextval函数一旦序列创建完成,我们就可以使用nextval函数来获取序列的下一个值了。

nextval函数的语法如下:```sqlSELECT sequence_name.NEXTVAL FROM dual;```其中,sequence_name是之前创建的序列的名称。

在使用nextval函数时,需要在序列的名称后面加上.NEXTVAL来获取序列的下一个值。

关键字dual是一个虚拟表,用来在没有实际表的情况下执行一些简单的SQL语句。

三、nextval函数的注意事项1. 每次调用nextval函数,序列的值都会自动加上步长的值。

在使用nextval函数之前,需要确保序列的步长设置是正确的,不会导致序列值的跳变或者重复。

2. nextval函数只能用于获取序列的下一个值,无法获取当前值或者上一个值。

如果需要获取当前值或者上一个值,可以使用currval函数来实现。

3. 在实际应用中,需要格外小心使用nextval函数,避免因为序列的不正确使用而导致数据的混乱或错误。

数据库oracle基础知识

数据库oracle基础知识

数据库oracle基础知识数据库Oracle是一款企业级关系数据库管理系统,被广泛应用于大型企业和政府机构。

为了从事Oracle数据库开发工作,需要掌握以下基础知识。

1. SQL语言SQL语言是Oracle数据库最常用的查询和管理语言。

它可以用于创建、修改和删除表格、存储过程和函数等对象。

SQL语言可以通过命令行工具或GUI工具(如Oracle SQL Developer)使用。

2. 数据类型Oracle数据库支持多种数据类型,包括字符型、数值型、日期型和布尔型等。

掌握各种数据类型的特点和使用方法对于正确存储数据非常重要。

3. 约束在Oracle数据库中,约束是定义表列或表之间关系的规则。

包括主键、外键、唯一约束和检查约束等。

理解和正确使用约束可以有效维护数据完整性。

4. 触发器触发器是一种在表上执行的操作,例如在插入、更新和删除时。

掌握触发器的创建和使用可以帮助开发者增强数据的一致性和完整性。

5. 存储过程和函数存储过程和函数是一些预定义的SQL语句,封装起来方便被调用。

存储过程和函数类似,但存储过程是没有返回值的,而函数则需要返回一个值。

掌握存储过程和函数的使用可以提高数据库的性能和效率。

6. 高可用性Oracle数据库提供了许多机制,确保在故障时保持数据库高可用性。

这包括了备份和恢复、灾备等方案。

掌握这些机制可以帮助开发者保障数据可靠性和业务连续性。

通过学习以上基础知识,可以使Oracle数据库开发者理解Oracle数据库的基本原理和概念。

并且可以使用这些知识来开发高效、高可用性、可扩展的Oracle数据库应用程序。

oracle rowid概念

oracle rowid概念

oracle rowid概念
Oracle中的rowid是一个唯一标识符,用于标识数据库表中的
每一行。

它由以下几个部分组成:
- 数据对象号(Data Object Number):表示行所在的表或簇的对象号码。

- 文件号(File Number):表示包含行的数据文件的文件号码。

- 块号(Block Number):表示在文件中包含行的数据块的块
号码。

- 行号(Row Number):表示在块中行的序列号。

rowid的格式类似于"AAAAAAAABBBBCCCCRRRR",其中AAAAAAA代表数据对象号,BBBB代表文件号,CCCC代表块号,RRRR代表行号。

rowid在Oracle数据库中用于快速访问和定位表中的数据行。

可以通过使用rowid来直接访问行,而不需要通过索引或其他
方式进行查找。

使用rowid可以提高查询性能,但需要谨慎使用,因为rowid可能会发生变化,例如在表被重新组织时。

可以通过使用伪列ROWID来检索和操作rowid。

例如,可以
使用SELECT语句检索行的rowid,或者使用WHERE子句根
据rowid来更新或删除行。

但是,应注意到rowid是Oracle数
据库内部使用的,应避免直接使用rowid进行业务逻辑操作。

Oracle数据库中序列(SEQUENCE)的用法详解

Oracle数据库中序列(SEQUENCE)的用法详解

在Oracl‎e数据库中,什么是序列‎呢?它的用途是‎什么?序列(SEQUE‎N CE)其实是序列‎号生成器,可以为表中‎的行自动生‎成序列号,产生一组等‎间隔的数值‎(类型为数字‎)。

其主要的用‎途是生成表‎的主键值,可以在插入‎语句中引用‎,也可以通过‎查询检查当‎前值,或使序列增‎至下一个值‎。

创建序列需‎要C REA‎T E SEQUE‎N CE系统‎权限。

序列的创建‎语法如下:CREAT‎E SEQUE‎N CE 序列名 [INCRE‎M ENT BY n] [START‎WITH n] [{MAXVA‎L UE/ MINVA‎L UE n|NOMAX‎V ALUE‎}] [] [{CACHE‎n|NOCAC‎H E}];INCRE‎M ENT BY 用于定义序‎列的步长,如果省略,则默认为1‎,如果出现负‎值,则代表序列‎的值是按照‎此步长递减‎的。

START‎WITH 定义序列的‎初始值(即产生的第‎一个值),默认为1。

MAXVA‎L UE 定义序列生‎成器能产生‎的最大值。

选项NOM‎A XVAL‎U E是默认‎选项,代表没有最‎大值定义,这时对于递‎增序列,系统能够产‎生的最大值‎是10的2‎7次方;对于递减序‎列,最大值是-1。

MINVA‎L UE定义‎序列生成器‎能产生的最‎小值。

选项NOM‎A XVAL‎U E是默认‎选项,代表没有最‎小值定义,这时对于递‎减序列,系统能够产‎生的最小值‎是?10的26‎次方;对于递增序‎列,最小值是1‎。

CYCLE‎和NOCY‎C LE 表示当序列‎生成器的值‎达到限制值‎后是否循环‎。

C YCLE‎代表循环,NOCYC‎L E代表不‎循环。

如果循环,则当递增序‎列达到最大‎值时,循环到最小‎值;对于递减序‎列达到最小‎值时,循环到最大‎值。

如果不循环‎,达到限制值‎后,继续产生新‎值就会发生‎错误。

CACHE‎(缓冲)定义存放序‎列的内存块‎的大小,默认为20‎。

Oracle序列

Oracle序列

在Oracle数据库中,sequence等同于序列号,每次取的时候sequence 会自动增加,一般会作用于需要按序列号排序的地方。

1、Create Sequence(注释:你需要有CREATE SEQUENCE或CREATE ANY SEQUENCE权限) CREATE SEQUENCE emp_sequenceINCREMENT BY 1 ——每次加几个START WITH 1 ——从1开始计数MAXV ALUE ——最大值值NOMAXV ALUE ——不设置最大值NOCYCLE ——一直累加,不循环CYCLECACHE 10;只要定义了emp_sequence,你就可以用使CURRV AL,NEXTV AL CURRV AL=返回sequence的当前值NEXTV AL=增加sequence的值,然后返回sequence 值例如:emp_sequence.CURRV ALemp_sequence.NEXTV ALinsert into dept (deptno, dname, loc) values (emp_sequence.nextval, '物流部', '苏州');//查询序列的当前值select emp_sequence.currval from dual;可以使用sequence的地方:。

不包含子查询、snapshot、VIEW的SELECT 语句。

INSERT语句的子查询中。

NSERT语句的V ALUES中。

UPDATE 的SET中可以看如下例子:INSERT INTO emp V ALUES(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20); SELECT empseq.CURRV AL FROM DUAL;需要注意的是:第一次NEXTV AL返回的是初始值;随后的NEXTV AL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。

Oracle_EBS_学习手册五_OM模块

Oracle_EBS_学习手册五_OM模块

OM模块操作手册作者:hzs创建日期:2011年12月28日更新日期:2011年12月29日版本: 1.0目录目录 (2)OM模块的概述 (3)OM模块与各模块间关系 (3)OM模块的业务流程 (3)OM模块功能操作 (4)客户管理功能 (4)客户配置文件分类的定义 (4)定义客户 (6)客户的合并 (9)客户信用检查 (11)定价管理功能 (14)将物料添加至价目表 (14)修改量的定义 (15)定价公式的设置 (17)销售模块设置 (18)发运权限的定义 (18)发运权限的授权 (19)付款条件的设置 (20)发放规则的定义(见挑库发放规则) (21)发放序列规则的设置 (22)库存挑库规则的设置 (22)挑库单分组规则的设置 (23)发运确认规则的设置 (23)默认规则的设置 (24)处理约束的设置 (25)OM系统参数的定义 (26)全局参数的设置 (27)发运参数的设置 (27)业务流程与实践 (29)物料的创建 (29)价目表的创建 (33)混合订单类型的设置 (37)单据序列的定义、分配 (40)销售流程-自动开票 (42)退货流程 (64)订单活动 (69)OM模块与各模块间关系OM模块的业务流程客户管理功能客户配置文件分类的定义路径:销售职责::设置->客户->配置文件分类1客户配置文件“延期付款配置文件”的定义参数描述:客户配置文件是对具有相似信誉、业务量和付款周期的客户进行分组。

通常可以定义3个分类,准时付款客户,延迟付款客户,经常准时付款的客户。

对于每个配置文件分类可以定义诸如信用限额、付款条件、对账单周期、开票和折扣信息之类的信息。

自动收款规则集:确定自动收款规则的顺序,过帐快速收款使用该规则更新客户帐户余额。

如果没有在配置文件分类层或者客户帐户或地点层定义自动收款规则集,AR模块将应用您在AR模块“系统选项”窗口中指定的自动收现规则集。

收帐员姓名:为客户帐户或地点输入默认收帐员,选择之前设定的收账员姓名信用检查:如果需要对客户进行信用管理,则需要可以在此处够选“信用检查”作为默认值。

Oracle基础必学知识点

Oracle基础必学知识点

Oracle基础必学知识点1. 数据库概念:Oracle是一种关系型数据库管理系统(RDBMS),用于存储和管理大量结构化数据。

它支持SQL语言,可以通过SQL语句进行数据查询、插入、更新和删除操作。

2. 数据库对象:Oracle数据库由多个对象组成,包括表、视图、索引、序列、存储过程等。

这些对象用于存储和处理数据,可以通过SQL语句进行操作。

3. 数据类型:Oracle支持多种数据类型,包括数字、字符、日期、大对象(LOB)等。

不同的数据类型用于存储不同类型的数据,可以根据需求选择合适的数据类型。

4. 表操作:在Oracle中,表用于存储数据。

可以使用CREATE TABLE语句创建表,使用INSERT语句插入数据,使用SELECT语句查询数据,使用UPDATE语句更新数据,使用DELETE语句删除数据。

5. 索引:索引是一种用于提高查询性能的数据结构。

在Oracle中,可以使用CREATE INDEX语句创建索引,通过索引可以快速定位到需要查询的数据,提高查询效率。

6. 数据约束:数据约束是用于保证数据的完整性和有效性的规则。

在Oracle中,可以使用约束来限制数据的取值范围、保证数据的唯一性等。

常见的约束类型包括主键约束、外键约束、唯一约束、非空约束等。

7. 视图:视图是一种虚拟表,它是从一个或多个表中获取数据的查询结果。

在Oracle中,可以使用CREATE VIEW语句创建视图,通过视图可以简化复杂的查询操作,提高数据的安全性。

8. 存储过程:存储过程是一组预先编译的SQL语句,存储在数据库中,并可以通过调用来执行。

在Oracle中,可以使用CREATE PROCEDURE语句创建存储过程,通过存储过程可以实现复杂的数据处理逻辑。

9. 事务控制:事务是一组逻辑操作,要么全部执行成功,要么全部回滚。

在Oracle中,可以使用BEGIN/END语句或者显式的事务语句(如COMMIT和ROLLBACK)来控制事务的提交或回滚。

oracle 序列用法

oracle 序列用法

oracle 序列用法在Oracle数据库中,序列是一种常用的数据结构,用于生成唯一的数字序列。

序列可以作为数据库表的主键、外键或其他需要唯一标识的字段的候选键。

本篇文章将介绍序列的创建、使用和注意事项。

一、创建序列要创建序列,可以使用以下语句:```sqlCREATESEQUENCEsequence_nameSTARTWITHstart_valueINCREMENTB Yincrement_valueNOCACHE;```其中,`sequence_name`是序列的名称,`start_value`是序列的起始值,`increment_value`是每次递增的数值,`NOCACHE`表示序列值不缓存,每次需要时重新生成。

例如,创建一个名为`my_sequence`的序列,起始值为1,每次递增1,不缓存:```sqlCREATESEQUENCEmy_sequenceSTARTWITH1INCREMENTBY1NOCACHE;```二、使用序列序列可以用于生成唯一的数字序列,通常用于作为数据库表的主键或外键。

可以使用以下语句从序列中获取下一个值:```sqlSELECTsequence_name.NEXTVALFROMdual;```例如,从`my_sequence`序列中获取下一个值:```sqlSELECTmy_sequence.NEXTVALFROMdual;```每次执行上述语句,数据库会自动从序列中生成一个唯一的数字序列,并将其返回。

三、注意事项1.序列的值是唯一的,每次获取都会生成一个新的值。

如果需要重复使用序列值,需要在数据库中进行适当的处理。

2.序列的值在生成后无法修改或删除。

如果需要使用已生成的序列值,需要在数据库中进行特殊处理。

3.序列的值在数据库中是物理存储的,因此需要确保序列值的存储空间足够大,以避免存储空间不足的问题。

4.在使用序列时,需要注意与其他数据类型和函数的关系,以确保数据的一致性和正确性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单据序列的概念及应用目录文档控制 ................................................................................................. 错误!未定义书签。

概述 . (3)单据序列概念 (3)单据序列(客户化应用) (6)AR 中的单据序列 (10)AR 中的单据序列试验 (13)单据序列的实用意义分析 (22)已解决问题和未解决问题 ..................................................................... 错误!未定义书签。

未解决问题 ...................................................................................... 错误!未定义书签。

已解决问题 ...................................................................................... 错误!未定义书签。

概述本文对 Oracle ERP系统中“单据序列”的概念进行了初步的探索和实验。

目的在于进一步理解“单据序列”的概念和作用单据序列概念序列的概念Oracle 对于序列概念的描述如下:单据序列可对 Oracle Applications 产品所生成的单据进行唯一编号。

利用 OracleApplications,您可以通过在表单中输入数据并生成单据(如发票),起动一项事务处理。

单据序列会生成跟踪线索,用以标识创建了该事务处理的应用产品(如 OracleReceivables),以及所生成的原始单据(如发票编号 1234)。

单据序列可以提供完整性的证明。

例如,单据序列可用于反映每项事务处理,甚至是失败的事务处理。

单据序列还可以提供跟踪线索。

例如,单据序列可以提供一条从总帐到子分类帐,再到最初影响帐户余额的单据的跟踪线索。

由于单据序列会生成跟踪数据,因此即使单据被删除,它们的跟踪记录也会保留下来。

序列的定义Nav : System Administrator->Application->Document->Define上图我们看到的是一个序列:AP发票号,可以看出来该序列采用自动编号。

初始值为1 ,其内部的Doc_sequence_id = 5oracle 对每一个序列的使用都有跟踪记录,并且序列的跟踪记录存储在应用产品的跟踪表中,其标题为 Application Short Name _DOC_SEQUENCE_AUDIT。

例如,属于 Oracle Payables 的序列的跟踪表为 AP_DOC_SEQUENCE_AUDIT。

在这张表中,我们检索AP发票所有使用过的编号,这些编号被使用在哪种单据类型上。

如下图所示上图中,DOC_SEQUENCE_ID是单据序列的内部ID , 5表示AP 发票;而DOC_SEQUENCE_ASSIGNMENT_ID是单据分配的内部ID,它表示该单据序列被分配在哪种单据类别上(下文会有描述);而DOC_SEQUENCE_VALUE表示该单据序列被分配在某种单据类别上,曾经在什么时候被使用过,其值是多少。

序列的分配Nav : System Administrator->Application->Document->Define上图中,我们看到单据序列:AP发票号被分配给单据类别:借项通知单。

其DOC_SEQUENCE_ASSIGNMENT_ID=8 。

单据类别的定义Nav : System Administrator->Application->Document->Category单据类别标识了存储单据(由用户输入的事务处理产生)的数据库表。

使用类别可对单据进行更精确地分类。

例如,您可以将应收帐款发票分成以下几个不同的类别:拖欠款项定金保证金借项通知单贷项通知单销售发票客户服务发票同样,您也可以将应付帐款或采购发票分成以下几个不同的类别:标准费用报表预付款利息贷项通知单借项通知单单据序列(客户化应用)我们知道,定义单据类别的时候只是指定了表的名字,而在定义单据序列,以及把单据序列分配给单据类别的时候也没有指定任何子段,那么oracle 是如何利用单据序列来给特定的字段自动生成编号的呢?我们来看个客户化程序中使用单据序列的实验例子。

客户化的程序中如何使用单据序列?1、在 HWCUST Schema 中创建一个测试表create table cux_seq_test(test_num number null,test_name varchar2(255) null)2、在APPS中创建同义词,并注册表和子段。

CREATE SYNONYM cux_seq_test for hwcust.cux_seq_test;EXECUTE ad_dd.register_table('HW', 'cux_seq_test', 'T', 8, 10, 90);EXECUTE ad_dd.register_column('HW', 'CUX_SEQ_TEST', 'TEST_NUM', 1,'NUMBER', 30, 'Y', 'N' );EXECUTE ad_dd.register_column('HW', 'CUX_SEQ_TEST', 'TEST_NAME', 2,'VARCHAR2', 255, 'Y', 'N' );3、Nav : System Administrator->Application->Document->Category定义单据类别4、定义单据序列Nav : System Administrator->Application->Document->Define5、序列分配:Nav : System Administrator->Application->Document->Define6、在Form 中使用出口函数:用Form 测试:上图中,当我们点击 [GetSeq] 按钮时,我们就调用Get_seq_num ,然后把值从参数:PARAMETER.INTEREST_INV_DOC_SEQ 中取出来放入Test Num ,就出现如上结果。

每点击一次,就会取到一个序列。

那么,如果我们又不想序号自动生成了该怎么办?我们只需要把单据序列分配失效就可以了。

我们在Form测试的时候,发现还是会自动生成。

这说明,序列分配没有立即失效。

但是过了一段时间再作Form测试时,发现序号不会自动生成了。

也就是我们失效序列分配的动作起作用了。

7、查看首先,我们查找我们刚定义的单据序列的doc_sequence_id =343 , 一般来说自己定义的单据序列的跟踪表是:FND_DOC_SEQUENCE_AUDIT。

select * from FND_DOC_SEQUENCE_AUDIT where doc_sequence_id = 343AR 中的单据序列我们通过一个实验来看看 AR中的单据序列应用。

下面的步骤是Oracle 文档中描述的,为某种“事务处理类型”启用单据序列所需要的步骤。

步骤 1 启用“连续编号”配置文件选项 (Sequential Numbering)要实施单据序列,首先必须启用“连续编号”配置文件选项。

您可以在地点层和(或)应用层设置此选项。

要查看此选项的当前设置,请定位至“个人配置文件值”窗口,然后查询“连续编号”配置文件选项。

注:您可以在“个人配置文件值”窗口中查看此配置文件选项,但是不能对其进行更新。

您可以通过浏览器访问此窗口。

有效的配置文件选项值为:不使用您可以始终输入事务处理。

在输入事务处理时,光标将跳过“单据编号”字段。

如果将此配置文件选项设置为此值,则不能使用“自动收款”功能。

始终使用如果事务处理没有序列,则不能输入事务处理。

此值要求您在输入事务处理时输入单据编号。

部分使用即使事务处理没有序列,您也可以输入事务处理。

但是,系统会向您发出警告。

例如,如果要将连续编号用于自动收款而不作其它用途,则请使用此值。

注意:应收款管理系统的自动收款功能会在创建收款时使用单据序列。

因此,如果要使用此功能,您必须将此配置文件选项设置为“部分使用”或“始终使用”。

在下面的实验中,我们设置成“部分使用”步骤 2 定义“生成单据编号”配置文件选项(AR: Document Number Generation Level)配置文件选项“AR:生成单据编号层”,使您可以确定应收款管理系统何时生成事务处理的单据编号。

您可以选择在提交事务处理或完成事务处理时生成单据编号。

默认值为“提交事务处理时”。

也就是说这个“配置文件”可以不设置,因为如果程序取不到这个“配置文件”的值,则系统会在“提交事务处理”时生成单据编号。

在下面的实验中,我们不设置这个配置文件选项,也就是说,我们使用默认值。

步骤 3 选择单据编号是否与事务处理编号相同在创建或导入事务处理时,事务处理批来源会确定是应收款管理系统自动生成批和事务处理编号,还是需要人工输入这些编号。

事务处理批来源还会确定应收款管理系统对于单据和事务处理编号是否使用同一编号。

注:如果您的应用产品使用无间隙的单据排序,则此选项可确保事务处理编号也是无间隙的编号。

要确保事务处理批来源的单据编号和事务处理编号相同,请执行以下操作:1. 定位至“事务处理来源”窗口。

2. 输入或查询事务处理来源。

请参阅:事务处理批来源3. 选定“将单据编号复制至事务处理编号”复选框。

4. 保存您所做的工作。

注意:如果“将单据编号复制至事务处理编号”选项设置为“是”,则应收款管理系统中可能有多个事务处理具有相同的事务处理编号和批来源。

但是,对于同一种事务处理类型,单据编号和事务处理编号始终唯一。

在下面的实验中,我们会定义若干种事务处理来源批。

分别两种情况A: 选定“将单据编号复制至事务处理编号”复选框。

B: 不选定“将单据编号复制至事务处理编号”复选框。

参见下一章:《AR 中的单据序列试验》步骤 4 定义序列使用“单据序列”窗口来定义序列的名称、类型和初始值。

您可以使用系统管理员责任来访问此窗口。

您无需为输入的每项事务处理定义不同的序列。

相关文档
最新文档