主键字母自动生成函数
-- 动态生成字母方式主键,A-Z 大于Z自动进位【26进制数值表示】-- 参数:动态查询表和主键列
create or replace function charkey (tabName char, pkName char) return char
asv_key varchar2(4); -- 表中查询出当前主键列最大值v_char varchar2(4) := ''; -- 输出用变量v_len number(1); -- 查询出最大值字符串长度v_i number(1); -- 循环控制变量v_c char(1); -- 提取单个字符变量v_flag number(1) := 1; -- 是否'进位'变量v_count number; -- 查询表中记录总数
begin-- 查询表中记录数execute immediate 'select count(1) from ' || tabName into v_count;-- 如果表中没有记录,则返回'A'if (v_count = 0) then v_char := 'A';return v_char;end if;-- 获取指定表中主键列当前最大值execute immediate 'select ' || pkName || ' from ' ||'(select rownum r, t.' || pkName || ' from ' ||'(select ' || pkName || ' from ' || tabName || ' order by length(' || pkName || ') desc, ' || pkName || ' desc) t) where r < 2'into v_key;-- 字符串长度v_len := length(v_key);-- 循环控制变量v_i := v_len;-- 从最后一个字符开始,向前循环遍历while v_i >= 1 loopv_c := substr(v_key, v_i, 1);-- 如果需要进位,当前字符+1if(v_flag = 1) thenv_c := chr(ascii(v_c)+1);v_flag := 0;end if;-- 当前字符超出上限if( ascii(v_c) > ascii('Z')) thenv_c := 'A';v_flag := 1;end if;v_char := v_c || v_char;v_i := v_i - 1;end loop;-- 如果遇到ZZ情况,需要补充一位'A'if(v_flag = 1) thenv_char := 'A' || v_char;end if; return v_char;
end;-- 测试表
create table testtab
(id varchar2(4) primary key,val number(4)
);-- 测试通过函数动态生成主键插入数据
declarev_count number(9) := 1;
beginwhile v_count <= 30 loopinsert into testtab values(charkey('testtab','id'), 1); v_count := v_count + 1;end loop;
end;select * from testtab;
主键字母自动生成函数相关推荐
- mysql主键约束自动增长_MySQL教程45-MySQL主键自增长
在 MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值.每增加一条记录,主键会自动以相同的步长进行增长. 通过给字段添加 AUTO_INCREM ...
- 2005数据库导入mysql没有主键_MSSQL2005数据库导入导出+带主键、自动增量、关系图、表架构等...
MSSQL2005数据库导入导出+带主键.自动增量.关系图.表架构等 关键词:mssql2005.导入导出 1.在本地安装Mssql Server 2005 2.接着安装SQLServer2005_X ...
- Oracle使用序列触发器实现主键id自动增长
记录一下oracle中的字段自增问题 在mysql中我们可以使用auto_increment来实现自动增长功能 而在oracle主键没有自动增长类型,所以一般使用序列产生的值作为某张表的主键,实现主键 ...
- ODAC(V9.5.15) 学习笔记(十九)主键值自动生成
ODAC支持通过Oracle的序列来自动生成表的主键功能.这个过程允许在客户端自动完成,不需要过多代码.这个对一些要求自动增长字段做主键的场合非常有用.其实现步骤为: 1.数据库必须先建立生成主键的序 ...
- 十、列属性、主键、自动增长、唯一键
列属性 列属性又称之为字段属性,在mysql中一共有6个属性:null,默认值,列描述,主键,唯一键和自动增长 Null属性 NULL属性:代表字段为空 如果对应的值为YES表示该字段可以为NULL ...
- 2019-7-26 [MySQL] 安装与介绍 语句分类/语法 数据类型 DDL数据定义:创建/查看/删除/使用 DML数据操作:增删改 主键约束 自动增长列 非空约束 默认值 Navicat
文章目录 0.知识回顾 1.数据库介绍 1.1 数据库概述 1.1.1 什么是数据库 1.1.2 什么是数据库管理系统 1.1.3 数据库与数据库管理系统的关系 1.2 数据库表 1.3 表数据 1. ...
- M| SQL 导入导出的时候数据库表的主键和自动编号丢失 怎么办
--导入数据时,使用默认选项,会丢失主键.约束.默认值等属性,按如下步骤操作: --> 导出向导 --> 选择数据源 --> 选择目的 --> ...
- oracle 主键列创建自增长,powerdesigner创建oracle 数据库表,设置表主键列为自动增长。 ....
1 在表视图的列上创建. 双击表视图,打开table properties --->columens , 双击要设置的列(显示列的序号的那个按钮,单击后,会显示横向的黑色箭头). 打开colum ...
- oracle主键id自动自增_Oracle主键ID设置自动增长(序列+触发器)
----创建表 create table users ( user_id number(6) not null, user_name varchar2(20) not null, user_pwd ...
最新文章
- RDKit | 基于不同描述符和指纹的机器学习模型预测logP
- 中科院张士峰:基于深度学习的通用物体检测算法对比探索
- eLua学习第一课:和Lua的第一次亲密接触
- Windows下挂载iscsi存储及多路径功能配置
- 课题申报书范文_课题申报书(范文5篇)
- 关于注册规划师的点点碎碎
- Corba传值包含中文解决
- css清除浮动的集中方法
- 【Elasticsearch】 Elasticsearch Suggester 自动纠错 详解
- 面向对象程序设计——总结作业
- 15_实现浏览器记录
- 使用tcpdump找出PP用户
- 论文 图片配色 漂亮颜色
- 给定任意字符串,返回所有叠字的数组
- OpenAI 最强对话模型 ChatGPT 注册使用笔记
- MapReduce-读取文件写入HBase
- Zookeeper:Zookeeper的主从选举机制
- linux的gpio设备,Linux 4.x之Gpio分析(一)Gpiolib库1
- Rancher Labs获2000万美元B轮融资, CEO 梁胜出任有容云联席CTO
- 念黄霑 之《只记今朝笑》
热门文章
- 在线图表编辑工具 draw.io 10.6.5 版本发布
- 微信小程序开发 | 官方问答精选
- 看美文,记单词(6)
- 基于Java的数据采集(终结篇)
- CentOS 5.2 安装Apache服务器后无法访问解决方法
- impdp导入dmp文件
- 如何解决ajax跨域问题
- python中object是什么类型_Python 的 type 和 object 之间是怎么一种关系?
- php怎么使得字体滚动,滚动文字+字体特效代码(全集)
- mft按钮设计_火力发电厂典型MFT逻辑控制实现.pdf