ORACLE单据序列的概念及应用V

合集下载

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函数,避免因为序列的不正确使用而导致数据的混乱或错误。

oracleEBS常用表,视图,会计分录,mtl_serial_numbers,总账

oracleEBS常用表,视图,会计分录,mtl_serial_numbers,总账
primary_uom_code, --单位
attribute7 --额外属性
)
VALUES (1,
'CREATE',
'*********',
'*********************',
***,
1,
'FG',
'Inactive',
'Tai',
''
);
2.通过API导入帐户别名接收
2.运行导入物料,选择相应的参数(处理集)
接口表导入示范:
INSERT INTO mtl_system_items_interface
(process_flag, --1为待处理,2为分配完成,3为异常,4为验证通过导入异常,5为导入过
程中,6为导入成功
transaction_type, --新分配物料则为CREATE,更新物料状态则为UPDATE
--记录接收的事务所产生的批次信息表
5、mtl_transaction_lot_numbers
--transaction_id=mtl_material_transactions.transaction_id
--lot_number=mtl_onhand_quantities.lot_number
item_number, --物料编码
description, --物料描述
organization_id, --需分配到的组织
set_process_id, --处理集,自己定义,届时在后续的导入物料的请求中作为参数
item_type, --物料类型

ORACLE_EBS_系统设计应用基础概述

ORACLE_EBS_系统设计应用基础概述

系列之三:ORACLE EBS系统应用基础概述一、前言二、表单与查询(Form and Summary)三、事务处理(Transaction)四、并发流程(Current Process)五、文件夹(Folder)六、弹性域(Flex field)七、值集与查找代码(Value Set and Lookup Code)八、配置文件(Profile)九、单据编号(Document Sequence)十、工作流(Workflow)十一、预警(Alert)十二、应用开放接口(Open Interface and API)十三、结语一、前言有网友在论坛发帖惊呼:好不容易把EBS系统安装好了,进去一看傻眼了,不知道从哪儿下手?发出惊叹的这位网友所遇到的问题,实际上也是很多人曾经遇到或正在遇到的问题。

长期以来,国的非专业人士(例如媒体)提及SAP或ORACLE的时候,有不少人喜欢用“超级难懂”来形容。

那么,国专业人士的看法又如何呢?笔者所听到过的最“雷”的说法来自一位国软件研发的高层主管:SAP/ORACLE太复杂了,其背后的东西、深层次的东西,我们永远不可能搞懂!真是太不可思议。

一方面,国的业人士几乎众口一词,我们与SAP/ORACLE 相比,技术上没有多大差距,平台工具都是公开的,也没有什么奥秘可言。

SAP/ORACLE由于产品做得早,我们在技术上甚至还有后发优势。

另一方面,我们也常常听到国有些人将SAP/ORACLE神秘化,认为其包含“复杂的、深刻的管理思想”,是德国人/美国人的东西,我们中国人的企业管理水平低,用不了是正常的。

国情不同,模式不同,中国人应该寻找一条适合自己的道路!真的是这样吗?SAP/ORACLE产品真的是那么神秘、高不可攀?今天专业从事ERP工作的人员,若从个人背景角度来看,通常可以划分为“技术出身”与“业务出身”两类。

“技术出身”的人在学习熟悉系统方面可能有一定优势,但与用户沟通交流的过程中,在迅速准确把握业务本质要领方面可能存在一定困难;而“业务出身”的人,对于与用户的业务沟通交流可能感觉比较容易,但在研究掌握系统方面则可能相对困难一些。

oracle v$transaction 字段详解

oracle v$transaction 字段详解

oracle v$transaction 字段详解在Oracle数据库管理中,v$transaction是一个非常重要的系统视图之一,它提供了关于当前事务的有关信息。

在本文中,我们将深入探讨v$transaction视图的各个字段,以了解它们的作用和意义。

1. XIDUSN - 事务的Undo段编号在Oracle数据库中,Undo段用于存储回滚信息,以便在需要时回滚事务。

XIDUSN字段表示正在执行事务的Undo段编号。

2. XIDSLOT - 事务的事务表槽位号事务表是Oracle数据库用于跟踪事务活动的内部数据结构。

XIDSLOT字段表示该事务在事务表中的槽位号。

3. XIDSQN - 事务的序列号XIDSQN字段表示该事务的序列号。

在Oracle数据库中,每个事务都有一个唯一的序列号,用于与其他事务区分。

4. STATUS - 事务的状态STATUS字段表示该事务的状态。

Oracle数据库中有多种事务状态,包括ACTIVE(活动状态)、COMMITTED(已提交状态)、ROLLED BACK (已回滚状态)等。

5. START_TIME - 事务的开始时间START_TIME字段表示该事务的开始时间。

它是一个日期类型的值,表示该事务开始执行的时间。

6. START_SCNB - 事务的起始系统变更号START_SCNB字段表示该事务开始时系统的变更号。

系统变更号是Oracle数据库的内部计数器,用于跟踪数据库的变化。

7. START_SCNW - 事务的起始系统变更序列号START_SCNW字段表示该事务开始时系统的变更序列号。

变更序列号是系统变更号的一个分支,用于跟踪事务的变化。

8. USED_UREC - 事务使用的Undo记录数USED_UREC字段表示该事务使用的Undo记录数。

Undo记录是Undo 段中的单个记录,用于存储事务执行期间所做的更改。

9. USED_UBLK - 事务使用的Undo块数USED_UBLK字段表示该事务使用的Undo块数。

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)来控制事务的提交或回滚。

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

单据序列的概念及应用目录文档控制 ................................................................................................................................... i i 概述 . (4)单据序列概念 (4)单据序列(客户化应用) (7)AR 中的单据序列 (11)AR 中的单据序列试验 (14)单据序列的实用意义分析 (23)已解决问题和未解决问题 (27)未解决问题 (27)已解决问题 (27)概述本文对 Oracle ERP系统中“单据序列”的概念进行了初步的探索和实验。

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

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

单据序列会生成跟踪线索,用以标识创建了该事务处理的应用产品(如Oracle Receivables),以及所生成的原始单据(如发票编号 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->Define拷贝号姓名Name HW_SEQ_TSTApplication5、序列分配:Nav : System Administrator->Application->Document->Define拷贝号姓名ApplicationApplication HW_SEQ_TSTCategory测试单据类别Set of BooksSequence HW_SEQ_TST6、在Form 中使用出口函数:procedure Get_seq_num isbeginif (nvl(:parameter.seq_numbers, 'N') != 'N'and NOT Is_DB_Record) thenUser_Exit('FND SEQCHK ' || 'APPLICATION_ID="20002" ' ||'SET_OF_BOOKS_ID="' || TO_CHAR(:PARAMETER.SET_OF_BOOKS_ID) || '" ' ||'CATEGORY="CUX_TST" ' || 'METHOD="A" ' ||'TRX_DATE=":PARAMETER.TRX_DATE" ' ||'DOC_SEQUENCE_VALUE=":PARAMETER.INTEREST_INV_DOC_SEQ"');if (Not Form_Success) thenRaise Form_Trigger_Failure;end if;end if;:PARAMETER.INTEREST_INV_DOC_SEQ := NULL;:PARAMETER.INTEREST_INV_DOC_SEQ_ID := NULL;if (nvl(:parameter.seq_numbers, 'N') != 'N') thenUser_Exit('FND SEQVAL ' || 'APPLICATION_ID="20002" ' ||'SET_OF_BOOKS_ID="' || TO_CHAR(:PARAMETER.SET_OF_BOOKS_ID) || '" ' ||'CATEGORY="CUX_TST" ' || 'METHOD="A" ' ||'TRX_DATE=":PARAMETER.TRX_DATE" ' ||'DOC_SEQUENCE_VALUE=":PARAMETER.INTEREST_INV_DOC_SEQ" ' ||'DOC_SEQUENCE_VALUE_FIELD="PARAMETER.INTEREST_INV_DOC_SEQ"' ||'DOC_SEQUENCE_ID_FIELD="PARAMETER.INTEREST_INV_DOC_SEQ_ID"');if (Not Form_Success) and (nvl(:parameter.seq_numbers, 'N') = 'A') then:PARAMETER.INTEREST_INV_DOC_SEQ := NULL;:PARAMETER.INTEREST_INV_DOC_SEQ_ID := NULL;Raise Form_Trigger_Failure;end if;fnd_message.debug(to_char(:PARAMETER.INTEREST_INV_DOC_SEQ));end if;end;FUNCTION Is_DB_Record RETURN Boolean ISBEGINif (nvl(:system.record_status,:system.form_status)in ('QUERY','CHANGED')) thenreturn TRUE;elsereturn FALSE;end if;RETURN NULL; END Is_DB_Record;用Form 测试:上图中,当我们点击 [GetSeq] 按钮时,我们就调用Get_seq_num ,然后把值从参数:PARAMETER.INTEREST_INV_DOC_SEQ 中取出来放入Test Num ,就出现如上结果。

相关文档
最新文档