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

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.在使用序列时,需要注意与其他数据类型和函数的关系,以确保数据的一致性和正确性。

Oracle中Sequence使用

Oracle中Sequence使用

Oracle中Sequence使用在Oracle数据库中,Sequence是一种非常有用的对象。

它是一个递增的数值生成器,可以用于为表中的主键列提供唯一的值,也可以用于生成其他需要唯一值的列。

要使用Sequence,首先需要创建一个Sequence对象。

创建Sequence的语法如下:```CREATE SEQUENCE sequence_name[ INCREMENT BY int_value ][ START WITH int_value ][ MAXVALUE int_value , NOMAXVALUE ][ MINVALUE int_value [ NOMINVALUE ] ][CYCLE,NOCYCLE][ CACHE int_value , NOCACHE ][ORDER,NOORDER]```其中,sequence_name是Sequence的名称,用于在后续操作中引用。

INCREMENT BY指定递增的步长,默认为1、START WITH指定Sequence的起始值,默认为1、MAXVALUE和MINVALUE用于指定Sequence的最大值和最小值。

CYCLE和NOCYCLE用于指定Sequence的循环性,如果设置为CYCLE,当Sequence达到MAXVALUE时会重新回到MINVALUE;如果设置为NOCYCLE,则达到MAXVALUE后会停止递增。

CACHE用于指定Sequence的缓存大小,即一次性预分配多少个Sequence值。

ORDER和NOORDER用于指定Sequence的顺序性,如果设置为ORDER,生成的Sequence值按照创建顺序排列;如果设置为NOORDER,则生成的Sequence值没有顺序。

创建完Sequence之后,可以使用以下语法获取Sequence的下一个值:```SELECT sequence_name.NEXTVAL FROM dual;```其中,sequence_name为之前创建Sequence时指定的名称。

oracle中sequence用法

oracle中sequence用法

oracle中sequence用法在Oracle数据库中,Sequence是一种用于生成唯一数字序列的对象。

它可以被广泛地应用于各种场景,例如主键的自动递增、生成唯一的标识符等。

以下是针对Sequence的详细用法解释。

1. 创建Sequence使用CREATE SEQUENCE语句来创建一个Sequence。

可以指定Sequence的名称、初始值、递增步长、最小值、最大值等参数。

例如,创建一个名为seq_customer_id的Sequence,其初始值为1,递增步长为1,最小值为1,最大值为9999:```CREATE SEQUENCE seq_customer_idSTARTWITH1INCREMENTBY1MINVALUE1MAXVALUE9999;```2. 使用Sequence在表中使用Sequence生成唯一的标识符时,可以在INSERT语句中使用NEXTVAL来获取Sequence的下一个值。

例如,向一个名为customer的表中插入一条新记录时,使用Sequence生成一个唯一的customer_id:INSERT INTO customer(customer_id, name, address)VALUES (seq_customer_id.NEXTVAL, 'John Doe', '123 Main St');```在更新表中的记录时,也可以使用Sequence生成一个唯一的标识符。

例如,更新名为customer的表中的记录时,为每条记录生成一个唯一的order_id:```UPDATE customerSET order_id = seq_order_id.NEXTVALWHERE customer_id = 1;```3. 获取Sequence的当前值使用SELECT语句的CURRVAL来获取Sequence的当前值。

但是,要注意CURRVAL只能在使用NEXTVAL之后才能使用,并且只能在同一个Session中使用。

oracleorderby正序,倒序,空值排序,数字代表列,数据类型转换,表达式中的排序

oracleorderby正序,倒序,空值排序,数字代表列,数据类型转换,表达式中的排序

oracleorderby正序,倒序,空值排序,数字代表列,数据类型转换,表达式中的排序order by colname desc 倒序order by colname ase 正序order by colname ase nulls fisrst 正序,但是为空的放到最前⾯order by 3 desc 以第三列排序,⽐较像 count(3) 中的3 ,是指第三列ps: 注意有些时候要注意进⾏数据类型的转换eg:创建表(也可以⽤dual配合with来创建临时表)1-- Create table2create table DEMO3 (4 n_iden NUMBER,5 c_order_code NVARCHAR2(50),6 c_order_name NVARCHAR2(50),7 c_friut NVARCHAR2(50),8 c_amount NUMBER(20,4),9 d_build DATE,10 c_buyer NVARCHAR2(50),11 c_seller NVARCHAR2(50)12 )13 tablespace MYORCL114 pctfree 1015 initrans 116 maxtrans 25517 storage18 (19 initial 64K20next 1M21 minextents 122 maxextents unlimited23 );24-- Add comments to the columns25 comment on column DEMO.n_iden26is'ID';27 comment on column DEMO.c_order_code28is'订单号';29 comment on column DEMO.c_order_name30is'订单名称';31 comment on column DEMO.c_friut32is'⽔果类型';33 comment on column DEMO.c_amount34is'⽔果数量';35 comment on column DEMO.d_build36is'创建⽇期';37 comment on column DEMO.c_buyer38is'订货⼈';39 comment on column DEMO.c_seller40is'买货⼈';插⼊数据:insert into DEMO (N_IDEN, C_ORDER_CODE, C_ORDER_NAME, C_FRIUT, C_AMOUNT, D_BUILD, C_BUYER, C_SELLER)values (1, 'order_num1', '第⼀单', '苹果', 1.0000, to_date('11-01-2017', 'dd-mm-yyyy'), '1', null);insert into DEMO (N_IDEN, C_ORDER_CODE, C_ORDER_NAME, C_FRIUT, C_AMOUNT, D_BUILD, C_BUYER, C_SELLER)values (3, 'order_num1', '第⼀单', '⾹蕉', 3.0000, to_date('11-01-2017', 'dd-mm-yyyy'), '11', null);insert into DEMO (N_IDEN, C_ORDER_CODE, C_ORDER_NAME, C_FRIUT, C_AMOUNT, D_BUILD, C_BUYER, C_SELLER)values (4, 'order_num2', '第⼆单', '苹果', 4.0000, to_date('10-01-2017', 'dd-mm-yyyy'), '12', null);insert into DEMO (N_IDEN, C_ORDER_CODE, C_ORDER_NAME, C_FRIUT, C_AMOUNT, D_BUILD, C_BUYER, C_SELLER)values (5, 'order_num2', '第⼆单', '橘⼦', 5.0000, to_date('10-01-2017', 'dd-mm-yyyy'), '13', null);insert into DEMO (N_IDEN, C_ORDER_CODE, C_ORDER_NAME, C_FRIUT, C_AMOUNT, D_BUILD, C_BUYER, C_SELLER)values (2, 'order_num1', '第⼀单', '橘⼦', 2.0000, to_date('11-01-2017', 'dd-mm-yyyy'), '2', null);commit;简单的进⾏排序:select * from DEMO order by c_buyer结果如下:可以看出并不是按照c_buyer的从⼩到⼤进⾏排序的.这时候就要进⾏字符格式转换select * from DEMO order by to_number(c_buyer)结果如下因为这⼀步不返回表(⽽是返回游标),使⽤了ORDER BY⼦句的查询不能⽤作表表达式。

oracle序列的用法

oracle序列的用法

oracle序列的用法Oracle序列是一种数据库对象,它用于产生唯一的、连续的数值序列。

它可以用于创建唯一的主键、创建唯一的值用于标识每一行数据、生成一组连续的数值等。

在本文中,将详细介绍Oracle序列的用法。

1.创建序列要创建一个序列,可以使用CREATESEQUENCE语句。

该语句的基本语法如下:CREATE SEQUENCE sequence_name[INCREMENTBYn][STARTWITHn][MAXVALUEn,NOMAXVALUE][MINVALUEn,NOMINVALUE][CYCLE,NOCYCLE][CACHEn,NOCACHE];其中,sequence_name是序列的名称。

INCREMENT BY指定每次递增的值,默认为1、START WITH指定序列的起始值,默认为1、MAXVALUE和MINVALUE分别指定序列的最大值和最小值。

CYCLE表示在达到最大值后是否循环到最小值重新开始,默认为NOCYCLE。

CACHE指定在内存中预分配的序列范围。

2.使用序列可以在INSERT语句中使用序列来生成主键值。

示例如下:INSERT INTO table_name (id, col1, col2)VALUES (sequence_name.NEXTVAL, 'value1', 'value2');其中,sequence_name.NEXTVAL表示获取序列的下一个值。

3.获取当前序列的值可以使用CURRVAL关键字来获取当前序列的值。

示例如下:SELECT sequence_name.CURRVAL FROM DUAL;需要注意的是,CURRVAL只能在使用NEXTVAL之后才能使用。

4.修改序列的属性可以使用ALTERSEQUENCE语句来修改序列的属性。

示例如下:ALTER SEQUENCE sequence_name[INCREMENTBYn][STARTWITHn][MAXVALUEn,NOMAXVALUE][MINVALUEn,NOMINVALUE][CYCLE,NOCYCLE][CACHEn,NOCACHE];可以根据需要修改INCREMENTBY、STARTWITH、MAXVALUE、MINVALUE、CYCLE和CACHE等属性。

oracle form 概念

oracle form 概念

oracle form概念Oracle Forms是Oracle Corporation提供的一种应用程序开发工具,用于创建企业级数据库应用程序的用户界面。

它是一种基于图形用户界面(GUI)的工具,用于设计和构建数据输入表单和报表,以便与Oracle数据库进行交互。

Oracle Forms的主要概念包括:1.表单(Forms):表单是用户界面的主要构建块。

它是一个包含各种用户输入元素(如文本框、按钮、下拉列表等)的窗体,用户可以在其中输入和检索数据。

表单用于与数据库进行通信,执行查询、插入、更新和删除等操作。

2.窗体(Canvas):窗体是表单的一部分,表示用户界面的可见区域。

一个表单可以包含一个或多个窗体,每个窗体可以包含不同的用户界面元素。

窗体可以分为多个块(Block),每个块对应一个数据表或查询结果集。

3.块(Block):块是表单中用于显示和编辑数据的逻辑单位。

每个块对应一个数据表、视图或查询结果集。

块定义了数据的输入和输出,以及与数据库的交互方式。

4.触发器(Triggers):触发器是在特定事件发生时执行的PL/SQL代码块。

例如,在用户点击按钮或在数据更新时触发。

触发器用于定义应用程序的行为和业务逻辑。

5.对象库(Object Library):对象库包含了可在多个表单之间共享和重用的对象,如窗体、块、程序单元等。

这有助于提高开发效率和保持一致性。

6.数据块(Data Block):数据块是表单中用于存储和处理数据库中数据的逻辑结构。

每个数据块对应一个数据表、视图或查询结果集,用于实现数据的输入、修改和展示。

总体而言,Oracle Forms提供了一个可视化的开发环境,使开发人员能够轻松地创建与Oracle数据库交互的用户界面。

通过使用这些概念,开发人员可以设计灵活、高效且易于维护的企业级应用程序。

oracle sequence的用法

oracle sequence的用法

oracle sequence的用法Oracle Sequence是一种用于生成唯一数值序列的对象,它在Oracle数据库中被广泛应用。

它可以在表中创建一个自动递增的数值列,用于唯一标识每一行数据。

在本文中,我们将对Oracle Sequence的用法进行详细介绍。

使用Oracle Sequence之前,我们需要先创建一个Sequence对象。

可以使用以下语法创建一个Sequence:CREATE SEQUENCE sequence_nameSTART WITH initial_valueINCREMENT BY increment_value[MAXVALUE maximum_value][MINVALUE minimum_value][CYCLE | NOCYCLE];其中,sequence_name为Sequence的名称,initial_value为起始值,increment_value为递增步长。

生成序列号的最简单方法是使用NEXTVAL函数。

例如,要在表中插入一条新记录并使用Sequence作为主键,可以使用以下语法:INSERT INTO table_name (id, column1, column2)VALUES (sequence_name.NEXTVAL, value1, value2);在这个例子中,我们使用了sequence_name.NEXTVAL作为表中id列的值。

除了NEXTVAL函数,我们还可以使用CURRVAL函数来获取当前的Sequence值:SELECT sequence_name.CURRVALFROM dual;CURRVAL函数返回当前的Sequence值,这个值可以在查询语句中使用。

在某些情况下,可能需要重置Sequence的值。

可以使用以下ALTER SEQUENCE语句来实现:ALTER SEQUENCE sequence_name[INCREMENT BY increment_value][RESTART [WITH initial_value]];通过INCREMENT BY子句,我们可以更改递增步长。

EBS_FND_单据序列和序列分配API开发_V1.0

EBS_FND_单据序列和序列分配API开发_V1.0

EBS_FND单据序列和序列分配API开发Author: 王宪Creation Date: 2014-08-22Last Updated: 2014-08-22Document Ref: <Document Reference Number>Version: 1.0Copy Number _____Document ControlChange RecordReviewersDistributionNote To Holders:If you receive an electronic copy of this document and print it out, please write yourname on the equivalent of the cover page, for document control purposes.If you receive a hard copy of this document, please write your name on the frontcover, for document control purposes.ContentsDocument Control (2)EBS_单据序列和序列分配API开发概述 (4)单据序列和分配API开发的逻辑 (4)单据序列和分配API接口表新建 (5)单据序列和分配API导入的主处理Package代码 (9)单据序列和分配API导入的结果演示 (28)Open and Closed Issues for this Deliverable (30)Open Issues (30)Closed Issues (30)EBS_单据序列和序列分配API开发概述01.开发需求由于现在EBS系统的公司特多,所以每年都必须要花半个月的时间来维护单据序列。

一共要维护的单据序列和单据序列分配的数据每年大概有2万笔以上。

系列之三:ORACLE EBS 系统应用基础概述(B)

系列之三:ORACLE EBS 系统应用基础概述(B)

系列之三:ORACLE EBS 系统应用基础概述(B)ORACLE EBS 系统应用基础概述三、事务处理(Transaction)四、并发流程(Current Process)五、文件夹(Folder)六、弹性域(Flex field)七、值集与查找代码(Value Set and Lookup Code)八、配置文件(Profile)九、单据编号(Document Sequence)十、工作流(Workflow)十一、预警(Alert)十二、应用开放接口(Open Interface and API)十三、结语(注:网站批量发图有问题,上传后显示不清楚。

点击图片打开后,质量尚可)三、事务处理(Transaction)如果说上述EBS的“表单与查询”的系统设计体现的正是“从业务到技术”,比较容易理解与掌握,那么,所谓“事务处理”则是体现系统“从技术再到业务”的一个典范,相对而言,理解起来要困难很多,原因是无法直接在手工业务模式下找到相对应的处理方式与过程。

以库房接收采购物料为例,假定公司规定必须严格按PO来接收,并且公司为了严格控制库存水平,接收必须小批量、多批次,则库房人员就可能需要针对同一个PO在短时期内开出N多张的“入库单”,工作量很大。

为了减少工作量、提高效率,库房人员可能会在供应商每次送货时,仅在找出来的PO纸面单据上只简单地做一个数量标识,最后累积起来汇总开一张“入库单”。

但这种“图省事”的做法显然是一种“很不规范”的处理方式,虽可以提高工作效率,却会因为容易带来很多其它管理问题而在实际工作中不被允许。

ORACLE 系统通过提供一个“事务处理”工作界面则很简单地解决了上述难题。

如下图9所示采购接收的事务处理工作界面:类似于“收货时直接在PO纸面单据上简单地做数量标识”,每次供应商送货来时,库存人员只需在系统中查找出对应的PO,简单地输入送货数量并保存,则系统会在后台自动生成“事务处理记录”(等同于是“入库单”)。

系列之三:ORACLE EBS 系统应用基础概述(B)

系列之三:ORACLE EBS 系统应用基础概述(B)

系列之三:ORACLE EBS 系统应用基础概述(B)Oracle ERP 2010-08-09 16:23:59 阅读133 评论0 字号:大中小订阅ORACLE EBS 系统应用基础概述三、事务处理(Transaction)四、并发流程(Current Process)五、文件夹(Folder)六、弹性域(Flex field)七、值集与查找代码(Value Set and Lookup Code)八、配置文件(Profile)九、单据编号(Document Sequence)十、工作流(Workflow)十一、预警(Alert)十二、应用开放接口(Open Interface and API)十三、结语(注:网站批量发图有问题,上传后显示不清楚。

点击图片打开后,质量尚可)三、事务处理(Transaction)如果说上述EBS的“表单与查询”的系统设计体现的正是“从业务到技术”,比较容易理解与掌握,那么,所谓“事务处理”则是体现系统“从技术再到业务”的一个典范,相对而言,理解起来要困难很多,原因是无法直接在手工业务模式下找到相对应的处理方式与过程。

以库房接收采购物料为例,假定公司规定必须严格按PO来接收,并且公司为了严格控制库存水平,接收必须小批量、多批次,则库房人员就可能需要针对同一个PO在短时期内开出N多张的“入库单”,工作量很大。

为了减少工作量、提高效率,库房人员可能会在供应商每次送货时,仅在找出来的PO纸面单据上只简单地做一个数量标识,最后累积起来汇总开一张“入库单”。

但这种“图省事”的做法显然是一种“很不规范”的处理方式,虽可以提高工作效率,却会因为容易带来很多其它管理问题而在实际工作中不被允许。

ORACLE 系统通过提供一个“事务处理”工作界面则很简单地解决了上述难题。

如下图9所示采购接收的事务处理工作界面:类似于“收货时直接在PO纸面单据上简单地做数量标识”,每次供应商送货来时,库存人员只需在系统中查找出对应的PO,简单地输入送货数量并保存,则系统会在后台自动生成“事务处理记录”(等同于是“入库单”)。

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 sequence 语法

oracle sequence 语法

Oracle数据库中的SEQUENCE是一种用于生成序列号的对象,它提供了一种灵活且可预测的方式来生成唯一的ID。

使用SEQUENCE可以确保在数据库中插入新的记录时,主键值能够按照预定的顺序递增,并且不会与其他记录的主键值冲突。

下面是创建和使用SEQUENCE的基本语法:1. 创建SEQUENCE:```sqlCREATE SEQUENCE sequence_nameSTART WITH start_valueINCREMENT BY increment_value[MAXV ALUE max_value | NOMAXV ALUE][CYCLE | NOCYCLE][CACHE cache_size | NOCACHE];```* `sequence_name`:SEQUENCE的名称。

* `start_value`:SEQUENCE的起始值。

* `increment_value`:每次递增的步长。

* `max_value`:SEQUENCE的最大值。

如果指定了`MAXV ALUE`,当达到最大值时,SEQUENCE会自动循环回最小值。

* `NOMAXV ALUE`:不指定最大值。

SEQUENCE可以递增到非常大的值。

* `CYCLE`:当达到最大值时,SEQUENCE会循环回最小值。

* `NOCYCLE`:当达到最大值时,SEQUENCE会停止递增。

* `cache_size`:指定用于缓存SEQUENCE值的内存缓冲区的大小。

如果指定了`CACHE`,则可以提高查询性能,但会占用一定的内存空间。

* `NOCACHE`:不使用缓存。

每次获取SEQUENCE值时都会直接访问磁盘。

2. 使用SEQUENCE:在插入记录时,可以使用SEQUENCE生成的序列号作为主键值。

以下是在插入记录时使用SEQUENCE的示例:```sqlINSERT INTO table_name (column1, column2, ...)V ALUES (sequence_name.NEXTV AL, value2, value3, ...);```在上述示例中,`sequence_name.NEXTV AL`将获取SEQUENCE 的下一个值,并将其作为插入语句的一部分插入到表中。

  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 ,就出现如上结果。

相关文档
最新文档