-- 动态生成字母方式主键,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;

主键字母自动生成函数相关推荐

  1. mysql主键约束自动增长_MySQL教程45-MySQL主键自增长

    在 MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值.每增加一条记录,主键会自动以相同的步长进行增长. 通过给字段添加 AUTO_INCREM ...

  2. 2005数据库导入mysql没有主键_MSSQL2005数据库导入导出+带主键、自动增量、关系图、表架构等...

    MSSQL2005数据库导入导出+带主键.自动增量.关系图.表架构等 关键词:mssql2005.导入导出 1.在本地安装Mssql Server 2005 2.接着安装SQLServer2005_X ...

  3. Oracle使用序列触发器实现主键id自动增长

    记录一下oracle中的字段自增问题 在mysql中我们可以使用auto_increment来实现自动增长功能 而在oracle主键没有自动增长类型,所以一般使用序列产生的值作为某张表的主键,实现主键 ...

  4. ODAC(V9.5.15) 学习笔记(十九)主键值自动生成

    ODAC支持通过Oracle的序列来自动生成表的主键功能.这个过程允许在客户端自动完成,不需要过多代码.这个对一些要求自动增长字段做主键的场合非常有用.其实现步骤为: 1.数据库必须先建立生成主键的序 ...

  5. 十、列属性、主键、自动增长、唯一键

    列属性 列属性又称之为字段属性,在mysql中一共有6个属性:null,默认值,列描述,主键,唯一键和自动增长 Null属性 NULL属性:代表字段为空 如果对应的值为YES表示该字段可以为NULL ...

  6. 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. ...

  7. M| SQL 导入导出的时候数据库表的主键和自动编号丢失 怎么办

    --导入数据时,使用默认选项,会丢失主键.约束.默认值等属性,按如下步骤操作: --> 导出向导       --> 选择数据源       --> 选择目的       --> ...

  8. oracle 主键列创建自增长,powerdesigner创建oracle 数据库表,设置表主键列为自动增长。 ....

    1 在表视图的列上创建. 双击表视图,打开table properties --->columens , 双击要设置的列(显示列的序号的那个按钮,单击后,会显示横向的黑色箭头). 打开colum ...

  9. oracle主键id自动自增_Oracle主键ID设置自动增长(序列+触发器)

    ----创建表 create  table  users ( user_id number(6) not null, user_name varchar2(20) not null, user_pwd ...

最新文章

  1. RDKit | 基于不同描述符和指纹的机器学习模型预测logP
  2. 中科院张士峰:基于深度学习的通用物体检测算法对比探索
  3. eLua学习第一课:和Lua的第一次亲密接触
  4. Windows下挂载iscsi存储及多路径功能配置
  5. 课题申报书范文_课题申报书(范文5篇)
  6. 关于注册规划师的点点碎碎
  7. Corba传值包含中文解决
  8. css清除浮动的集中方法
  9. 【Elasticsearch】 Elasticsearch Suggester 自动纠错 详解
  10. 面向对象程序设计——总结作业
  11. 15_实现浏览器记录
  12. 使用tcpdump找出PP用户
  13. 论文 图片配色 漂亮颜色
  14. 给定任意字符串,返回所有叠字的数组
  15. OpenAI 最强对话模型 ChatGPT 注册使用笔记
  16. MapReduce-读取文件写入HBase
  17. Zookeeper:Zookeeper的主从选举机制
  18. linux的gpio设备,Linux 4.x之Gpio分析(一)Gpiolib库1
  19. Rancher Labs获2000万美元B轮融资, CEO 梁胜出任有容云联席CTO
  20. 念黄霑 之《只记今朝笑》

热门文章

  1. 在线图表编辑工具 draw.io 10.6.5 版本发布
  2. 微信小程序开发 | 官方问答精选
  3. 看美文,记单词(6)
  4. 基于Java的数据采集(终结篇)
  5. CentOS 5.2 安装Apache服务器后无法访问解决方法
  6. impdp导入dmp文件
  7. 如何解决ajax跨域问题
  8. python中object是什么类型_Python 的 type 和 object 之间是怎么一种关系?
  9. php怎么使得字体滚动,滚动文字+字体特效代码(全集)
  10. mft按钮设计_火力发电厂典型MFT逻辑控制实现.pdf