--假如我自定义的编号为 BAIQRSH07+日期+001
--例如BAIQRSH072014001、 BAIQRSH072014002、
--每年都是从001开始 如 BAIQRSH072015001
CREATE OR REPLACE FUNCTION GetFlowNumber
RETURN VARCHAR2
AS
serialNumber NUMBER(16);--序列号 自定义编号最后3位数
flowNumber VARCHAR2(50);--返回流程编号 BAIQRSH07+日期+XXX
flowNum VARCHAR2(50);--自定义编号 BAIQRSH07+日期
BEGIN
flowNum := 'BAIQRSH07'|| TO_CHAR(SYSDATE, 'YYYY');
--模糊查找数据库当前最大的编号 即最后面3位数 然后查询出来的 赋值给serialNumber
--max 是Oracle的一个函数,这里用于获取 该表中最大的编号
--substr 是Oracle的一个函数,这里用于截取 自定义编号,就是获取 BAIQRSH07+日期 后面的数
--nvl 是Oracle的一个函数,这里用于判断 为空时,赋值为0
--to_number 是Oracle的一个函数,把字符改成数字
--因为字符比较时 999会大于1000 所以先转为数字,再比较大小
select nvl(max(to_number(substr(flow_num,14))),0) into serialNumber from FlowTable t where t.flow_num like flowNum||'%';
--这里就是用于累加的
serialNumber :=serialNumber+1;
if serialNumber<100 then--如果小于100
--LPAD是是Oracle的一个函数,lpad(字段名,填充长度,填充的字符) 当序列号 不足3位时 自动填充0,例如 你序列号位1,不满足3位,怎会为001
flowNumber := flowNum || LPAD(serialNumber, 3, '0');--左边添加自动补0,直到达到3位数
else
flowNumber := flowNum || serialNumber;
end if;
RETURN flowNumber;
END;
后台获取自定义编号
根据下面这条 SQL 语句就可以获取到自动生成的编号了。 后台自己写
String sql = "SELECT GetFlowNumber() flowNumber FROM DUAL";
分享到:
相关推荐
虽然数据库自定义函数在某些情况下非常有用,如解决跨数据库兼容性问题,但它们的使用通常不如编程语言中的函数方便。自定义函数在 Oracle 中编写和调试较为繁琐,且效率可能较低。在实际应用中,应权衡其优点和缺点...
在Oracle数据库中,`CRC32`函数是一种非常实用的功能,主要用于将字符类型的数据转换为一个唯一的数字类型,这一过程通常被称为散列(Hash)。通过该函数,可以方便地生成针对特定字符串的固定长度的数字签名,这...
### Oracle游标、视图和自定义函数 #### 1. 游标 **1.1 游标的优势和类型** 在数据库应用开发过程中,游标作为一种强大的工具,为开发者提供了一种处理从表中检索出的数据的有效方法,特别是在需要逐条处理数据...
在Oracle数据库中,创建这样一个自定义函数可能涉及PL/SQL编程,如下所示: ```sql CREATE OR REPLACE FUNCTION validate_uscc(p_uscc VARCHAR2) RETURN BOOLEAN AS l_checksum NUMBER; BEGIN -- 计算校验码 l_...
### Oracle数据库常用函数详解 #### 数字函数:处理数值型...以上函数是Oracle数据库中常用的功能之一,熟练掌握它们能够显著提升数据库操作的效率和精确性,特别是在数据清洗、统计分析及报表生成等场景下尤为重要。
### Oracle数据库经典学习教程知识点概览 #### 一、走进Oracle - **Oracle简介** - Oracle是一款由美国甲骨文公司(Oracle Corporation)开发的企业级数据库管理系统,它以其强大的功能、高度的安全性和稳定性而...
Oracle数据库则是由甲骨文公司开发的一款企业级数据库系统,它支持大型复杂应用,提供了高度的可扩展性和安全性。Oracle支持多种数据类型,包括标准SQL类型以及自定义对象类型。其数据库结构包含表、视图、索引、...
在Excel中通过Visual Basic for Applications (VBA) 连接Oracle数据库是一种强大的自动化工具,能够让你轻松地从大型数据库中提取、处理和分析数据。VBA是Excel内置的编程环境,允许用户创建自定义功能和宏,以实现...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,它在企业级数据存储、管理和处理中扮演着核心角色。本文将深入探讨在Oracle数据库操作中涉及的一些关键知识点,包括记录集的显示、时间的SQL转换、汉字的...
"oracle数据库导出表结构到WORD文档"是一个实用的操作,它能够帮助我们生成包含所有表定义、字段信息、主键、外键等的详细报告。通过这个工具,我们可以快速地将Oracle中的数据库对象信息整理成Word文档,方便打印、...
在Oracle数据库环境中,有时我们需要对汉字进行处理,例如生成拼音或五笔的首字母,这在数据检索、信息编码或构建搜索引擎时非常有用。本文将详细介绍如何在Oracle中实现这一功能,主要基于提供的两个SQL脚本文件:`...
力控与Oracle数据库的连接是工业自动化领域常见的数据交互方式,力控实时数据库提供了一个高效、稳定且开放的平台,能够与多种数据库系统进行数据交换,包括Oracle和Access。本文将重点介绍如何配置力控与Oracle...
Oracle数据库比对工具是专为数据库管理员和开发人员设计的一款高效实用的软件,它能够帮助用户在两个不同的Oracle数据库之间进行深度的结构和数据比对。这类工具的主要目的是确保数据库的一致性和完整性,特别是在...
根据提供的文件内容,可以看出这份文档是关于Oracle数据库开发规范的。接下来我将详细解释文档中涉及的Oracle数据库相关知识点。 首先,文档中提到了一些关键的Oracle数据库对象,包括: 1. 表(table): 是存储...
Oracle数据库系统是企业级数据管理的重要工具,其中存储过程、自定义函数以及动态建表存储过程是提升数据库性能和管理效率的关键技术。以下是对这些概念的详细解释。 1. **Oracle存储过程**: 存储过程是预编译的...
1. 高效性:此函数针对Oracle数据库环境进行了优化,能够快速处理大量数据,显著提升数据处理效率。 2. 安全性:通过将手机号码的中间四位替换为星号(*),有效防止了敏感信息泄露,满足GDPR等国际隐私法规的要求。 3...
如果标准的自动编号机制不能满足特定需求,开发者可以编写自定义函数或存储过程来生成编号。例如,可以创建一个包含序列号、日期或字母前缀的复杂编号系统。 7. **数据库设计** 设计数据库时,需要考虑自动编号...
在Oracle数据库中,有时需要将汉字转换成拼音,尤其是在处理中文数据时。本篇文档详细介绍了两种用于转换汉字到拼音的自定义函数:`fn_getpyKGJG` 和 `fn_getpyWKG`。这些函数能够满足不同场景下对拼音格式的需求,...
本工具“mysql, sqlserver, Oracle 数据库生成javabean小工具”正是为了解决开发者手动编写javabean时的繁琐工作,它能够自动根据数据库中的表结构生成对应的javabean文件。 1. **数据库连接**: 工具支持三种主流...