使用Oracle函数在创建表的时候自动加入生成的流水号 生成格式是:前缀+年月日+00000
CREATE OR REPLACE FUNCTION fn_no_make(v_type VARCHAR2,
v_number_col VARCHAR2,
v_table_name VARCHAR2)
/*
* 参数说明:
* v_type: 编码前缀
* v_number_col:编码所在列名
* v_table_name:编码所在表名
*/
RETURN VARCHAR2 IS
v_old_no VARCHAR2(50); --原编码
v_old_num NUMBER; -- 原编码后五位编号
v_new_num VARCHAR2(10); --新编码后五位编号
v_maked_no VARCHAR2(50); --新编码
v_date_no VARCHAR2(20); --当前日期编号
v_sql VARCHAR2(4000);
BEGIN
-- 找出其中最大的
v_sql := 'SELECT MAX(' || v_number_col || ') FROM ' || v_table_name;
EXECUTE IMMEDIATE v_sql
INTO v_old_no;
-- 将当前日期取出
v_sql := 'SELECT SUBSTR(TO_CHAR(SYSDATE,''YYYYMMDD''), 1, 8) AS DATE_NO FROM DUAL';
EXECUTE IMMEDIATE v_sql
INTO v_date_no;
-- 截取日期和新的日期
v_old_num := to_number(substr(v_old_no, 13, 5));
-- 增加流水号数量
v_new_num := to_char(v_old_num + 1);
-- 填充流水号为五位数
WHILE length(v_new_num) < 5
LOOP
v_new_num := '0' || v_new_num;
END LOOP;
/*
* 如果日期相同或者当前表为空
* 执行流水号为第一个00001
* 否则将上面计算好的流水号加入到新的流水号里面
*/
IF v_old_no IS NULL OR
substr(v_old_no, 4, 8) <> v_date_no
THEN
v_maked_no := v_type || v_date_no || '00001';
ELSE
v_maked_no := v_type || v_date_no || v_new_num;
END IF;
-- 最后返回新的流水号
RETURN(v_maked_no);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
END fn_no_make;
INSERT INTO TEST_AA VALUES(sys_guid(),fn_no_make(901,'XSCM_ADDR2','TEST_AA'));
select fn_no_make(901,'XSCM_ADDR2','TEST_AA') from dual
select sys_guid() from dual
select * from xscm_mstr
-- Create table
create table TEST_AA
(
XSCM_ADDR VARCHAR2(80) default ' ' not null,
XSCM_ADDR2 VARCHAR2(80) default ' ' not null
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 128K
next 1M
minextents 1
maxextents unlimited
);
select * from TEST_AA
使用Oracle函数在创建表的时候自动加入生成的流水号 生成格式是:前缀+年月日+00000的更多相关文章
- Oracle数据库之创建表结构
Oracle数据库之创建表结构 主键与外键 主键:关系型数据库中的一条记录中有若干个属性,若其中的某一个属性组(可以是一个属性,也可以是多个)能唯一标识一条记录,那么该属性组就是主键. 外键:关系型数 ...
- Oracle数据库之创建表空间与用户
Oracle数据库之创建表空间与用户 一.创建表空间 基本语法表述: CREATE TABLESPACE tablespace_name [DATAFILE datafile_spec1 [,data ...
- Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理
摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■ 详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...
- oracle与mysql创建表时的区别
oracle创建表时,不支持在建表时同时增加字段注释.故采用以下方式: #创建表CREATE TABLE predict_data as ( id integer ), mid ), time dat ...
- oracle使用sqlplus创建表空间
一.打开命令行窗口,输入以下命令:sqlplus /nolog 回车后,将出现提示符 SQL>, 这时输入conn / as sysdba 一般即可登录,如果失败的话,可以试一下用conn sy ...
- oracle数据库如何创建表空间,临时表空间
目标 1.创建表空间 lxy 2.创建临时表空间tmp_lxy create tablespace lxy datafile '/u01/app/oracle/oradata/LXY/lxy.dbf' ...
- Oracle SQLserver数据库创建表ID字段的自动递增_序列
Oracle 将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现) ----创建表 Create table t_user( Id ),userid ),loginpasswo ...
- Oracle sql语句创建表空间、数据库、用户及授权
--创建表空间和数据库文件及默认表空间大小 create tablespace TableSpace_Test datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\O ...
- oracle用命令创建表空间、用户,并为用户授权、收回权限。
oracle中如何删除用户? Oracle中使用DROP USER来删除用户,如果使用DROP USER CASCADE那么用户的对象也同时被删除掉.为了达到删除用户的效果而又不影响对用户下的对象的使 ...
随机推荐
- 关于ZEDboard
核心芯片:核心ZYNQ XC7Z020CLG484 双核Cortex-A9 MPcore.主频达到667MHz,板载512MB内存 12V@3A的电源适配器 使用的SD卡中预装了Linaro系统,这是 ...
- go语言笔记——map map 默认是无序的,不管是按照 key 还是按照 value 默认都不排序
示例 8.1 make_maps.go package main import "fmt" func main() { var mapLit map[string]int //va ...
- Luogu3403跳楼机
https://zybuluo.com/ysner/note/1099616 题面 给你三个数\(x\),\(y\),\(z\),问你能够凑出多少个[1,\(h\)]之间的数. 解析 处理出\(y\) ...
- bzoj3629 [JLOI2014]聪明的燕姿——DFS+约数和定理
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3629 扫除了一个知识盲点:约数和定理 约数和定理: 对于一个大于1正整数n可以分解质因数:n ...
- PCB Winform中的WebBrowser扩展拖放(拖拽)功能 实现方法
我们在Winform支持网页通常增加WebBrowser控件实现,相当于内嵌浏览器浏览网页使用, 而此WebBrowser默认情况是文件拖入功能是不支持的, 如何才能支持呢.在这里介绍如何实现方法 一 ...
- PCB SQL Server 代码创建DbLink
代码如下: ) ) ) ) ) SET @serverName = 'DbLinkName' --db链接名 SET @ip = '120.79.36.65' --需连接服务器的IP SET @dbN ...
- jsp中的setHeader页面跳转备忘录
1 <!-- response.setHeader("refresh","3;url=你想跳的页面")--> <%-- response.se ...
- Oracle数据库初学者入门教程
Oracle数据库是相对于其他数据库来说比较难的一个.Oracle Database,又名Oracle RDBMS,简称Oracle.是甲骨文公司推出的一款关系数据库管理系统.Oracle数据库系统是 ...
- Android源码下载方法
1. 下载 repo 工具 mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/re ...
- 关于BUG
1.BUG的理解 2.提高BUG report的技巧