oracle

关注公众号 jb51net

关闭
首页 > 数据库 > oracle > Oracle获取GUID和批量插入

Oracle获取GUID和生成批量插入语句实现方法

作者:牛奶咖啡13

这篇文章主要给大家介绍了关于Oracle获取GUID和生成批量插入语句实现的相关资料,文中通过图文以及示例代码介绍的非常详细,对大家学习或者工作具有一定的参考价值,需要的朋友可以参考下

一、业务需要

在进行系统的日常维护过程中,涉及到指定条件的人员或内容批量插入内容,此时又希望能够快速根据指定条件自动生成对应的插入SQL语句,而不用编写代码;比如:我们需要给菜单权限表中指定菜单节点为【设备报表】的所有人员都添加(名为【设备报警】的菜单)内容。

二、实现思路

①Oracle获取GUID字符串;

②编写指定条件的查询语句;

③编写基础的插入语句;

④结合指定条件的查询语句自动生成带条件的插入语句

三、实现方法

3.1、Oracle获取GUID字符串

--Oracle中获取小写GUID字符串SQL语句
SELECT lower(rawtohex(sys_guid())) GUID  from DUAL;
--Oracle中获取大写GUID字符串SQL语句
SELECT upper(rawtohex(sys_guid())) GUID  from DUAL;

3.2、编写指定条件的查询语句

--查询到【MENUROLE】表中菜单节点为【设备报表】条件下的所有人员SQL语句:
SELECT EMPLOYEE from MENUROLE WHERE NODENAME='设备报表' 

3.3、编写基础的插入语句

--插入语句的语法
INSERT INTO 表名称 ( 字段1, 字段2, 字段3,... )
VALUES ('内容1','内容2','内容3',...);
--比如给【MENUROLE】插入一条菜单信息的SQL语句
INSERT INTO MENUROLE ( GUID, CREATETIME, CREATEEMPLOYEE, NODENAME, PARENTID, NAMESPACE, NODEMENUNAME, EMPLOYEE )
VALUES
	( 'ec65cbc246bac213e0536a0318ac6bbe', TO_DATE( '2022-11-01 22:06:36', 'yyyy-MM-dd hh24:mi:ss'), 'admin','报表1_设备报警','设备报表','MESClient.View.Reports.EquipmentAlarmInfo','1车间设备报警信息','202201061316');

3.4、结合指定条件的查询语句自动生成带条件的插入语句

注意:|| 表示拼接字符 

--获取到菜单权限表中菜单节点为【设备报表】条件下的所有人员都添加一个【1车间设备报警信息】的界面内容的批量插入语句生成
SELECT 'INSERT INTO MENUROLE (GUID, CREATETIME, CREATEEMPLOYEE, NODENAME, PARENTID, NAMESPACE, NODEMENUNAME, EMPLOYEE )
VALUES
	( '''||lower(rawtohex(sys_guid())) ||''', TO_DATE( ''2022-11-01 22:06:36'', ''yyyy-MM-dd hh24:mi:ss''), '''||CREATEEMPLOYEE||''',''报表1_设备报警'',''设备报表'',''MESClient.View.Reports.EquipmentAlarmInfo'',''1车间设备报警信息'','''||EMPLOYEE||''');' from MENUROLE WHERE NODENAME='设备报表';

该语句执行后生成的批量插入菜单内容语句如下:

复制这些生成的语句如下所示:

四、其他方式实现根据查询结果批量插入修改操作

Oracle中实现获取指定表名称批量修改表中的字段类型

https://www.jb51.net/database/29395916j.htm

总结

到此这篇关于Oracle获取GUID和生成批量插入语句实现的文章就介绍到这了,更多相关Oracle获取GUID和批量插入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文