在进行系统的日常维护过程中,涉及到指定条件的人员或内容批量插入内容,此时又希望能够快速根据指定条件自动生成对应的插入SQL语句,而不用编写代码;比如:我们需要给菜单权限表中指定菜单节点为【设备报表】的所有人员都添加(名为【设备报警】的菜单)内容。
①Oracle获取GUID字符串;
②编写指定条件的查询语句;
③编写基础的插入语句;
④结合指定条件的查询语句自动生成带条件的插入语句
- --Oracle中获取小写GUID字符串SQL语句
- SELECT lower(rawtohex(sys_guid())) GUID from DUAL;
-
-
- --Oracle中获取大写GUID字符串SQL语句
- SELECT upper(rawtohex(sys_guid())) GUID from DUAL;
- --查询到【MENUROLE】表中菜单节点为【设备报表】条件下的所有人员SQL语句:
- SELECT EMPLOYEE from MENUROLE WHERE NODENAME='设备报表'
- --插入语句的语法
-
- 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');
注意:|| 表示拼接字符
- --获取到菜单权限表中菜单节点为【设备报表】条件下的所有人员都添加一个【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='设备报表';
该语句执行后生成的批量插入菜单内容语句如下:
复制这些生成的语句如下所示: