1、DB2将一列转成一行并用逗号隔开,db2获取当前时间,生产uuid;2、mysql两张表关联字段得数据修改和联系;3、DB2存储过程实现,通过判断数据库是否重复,返回不同的结果

MYSQL

业务实现

1.修改表中某个字段数据,为另一张表中该字段数据相同对应另一个字段的值

例子:

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

student表中ex1字段对应num表中ex1,并将student表中ex1修改为num表中ex2的值

结果如下

在这里插入图片描述

sql如下
update student set  student.ex1 = 
(select num.ex2 from num where student.ex1=num.ex1)

2.查询是使查询结果是当前表字段数据对应另一张表的数据

在这里插入图片描述

实现效果

在这里插入图片描述

sql如下
select *,(select ex2 from num where num.ex1=s.ex1) as ex3 from student s

db2

生成uuid

由于db2中没有像mysql中的获取uuid的方法,所以需要自定义一个方法函数,生成uuid

代码如下
CREATE OR REPLACE FUNCTION test.F_GET_UUID ( ) RETURNS VARCHAR(64)
SPECIFIC F_GET_UUID
LANGUAGE SQL
NOT
DETERMINISTIC EXTERNAL ACTION
READS SQL DATA
INHERIT SPECIAL REGISTERS RETURN lower(hex(RAND())|| hex(RAND()))
调用方法:
SELECT test.F_GET_UUID() FROM SYSIBM.SYSDUMMY1;
在查询语句中使用(在查询语句中,直接——库名.自定义的函数——就可以直接生成uuid)
	SELECT
    GBSC00.f_get_uuid,
    to_char(CURRENT_TIMESTAMP, 'yyyyMMddHH24Miss')
	FROM    test.dome1 t;

db2获取当前时间

代码如下
--获取时间
VALUES   CURRENT_TIMESTAMP
--获取时间 yyyy-MM-dd年月日
VALUES   to_char(CURRENT_TIMESTAMP, 'yyyy-MM-dd')
--获取时间 yyyy-MM-dd HH24:Mi:ss年月日时分秒
VALUES   to_char(CURRENT_TIMESTAMP, 'yyyy-MM-dd HH24:Mi:ss')
--获取时间 时间的14位
VALUES   to_char(CURRENT_TIMESTAMP, 'yyyyMMddHH24Miss')

可以根据yyyyMMddHH24Miss的格式,自定义需要获取时间的格式

DB2将一列转成一行并用逗号隔开

1REPLACE(REPLACE(xml2clob(xmlagg(xmlelement(NAME A, a.PROD_SPEC || ','))), '<A>', ''), '</A>', '') AS PROD_SPEC
-- 都可用
2、LISTAGG(my_column, ',')
-- 请注意,LISTAGG函数在DB2版本 9.7及以上可用。

将一列2020、2021、2022数据转成成一行
在这里插入图片描述

DB2存储过程实现,通过判断数据库是否重复,返回不同的结果

以下是案例

DELIMITER //

CREATE OR REPLACE PROCEDURE BGTAMSLZ00.MB_ADD_0001(
IN IN_MB VARCHAR(32),IN IN_DATE_PRC VARCHAR(32),
IN IN_JZ VARCHAR(32),IN IN_BIANHAO VARCHAR(64),
IN IN_REMARK1 VARCHAR(255),IN IN_REMARK2 VARCHAR(255),
IN IN_REMARK3 VARCHAR(255),IN IN_REMARK4 VARCHAR(255),
IN IN_REMARK5 VARCHAR(255),IN IN_REMARK6 VARCHAR(255),
IN IN_REMARK7 VARCHAR(255),IN IN_REMARK8 VARCHAR(255),
IN IN_REMARK9 VARCHAR(255),IN IN_REMARK10 VARCHAR(255))
/*
| PROCEDURE NAME: MB_0001
| 传参类型 
| 目标值,日期,机组,报表编号,备注1,备注2,备注3,备注4,备注5,备注6,备注7,备注8,备注9,备注10
| OVERVIEW: 冷轧各主题目标值维护(增删改查)-新增操作
|
| AUTHOR(S): 
|
| 修改日志:
|   日期            作者           内容
|   2023-04-03                 创建
*/
RESULT SETS 2
BEGIN
DECLARE my_var1 INTEGER DEFAULT 0;

DECLARE RESULT_SET CURSOR WITH RETURN FOR
SELECT  '添加成功' AS A1
FROM  SYSIBM.SYSDUMMY1;

DECLARE RESULT_SET2 CURSOR WITH RETURN FOR
SELECT  '添加重复' AS A1
FROM  SYSIBM.SYSDUMMY1;


SELECT COUNT(1) INTO  my_var1
FROM BGTAMSLZ00.T_DWS_ZZPQ_GYLZ_MUBIAO_WEIHU 
WHERE BIANHAO=IN_BIANHAO;

IF my_var1>0 THEN 
OPEN RESULT_SET2;
ELSE 
OPEN RESULT_SET;
    IF (IN_BIANHAO!='' OR LENGTH(IN_BIANHAO)!=0) and (IN_REMARK10!='' OR LENGTH(IN_REMARK10)!=0) THEN 
    INSERT INTO BGTAMSLZ00.T_DWS_ZZPQ_GYLZ_MUBIAO_WEIHU 
    (REC_ID,MB,DATE_PRC,JZ,BIANHAO,REMARK1,REMARK2,REMARK3,
    REMARK4,REMARK5,REMARK6,REMARK7,REMARK8,REMARK9,REMARK10)
    VALUES 
    (IN_BIANHAO||'-'||IN_JZ||'-'||BGTAMSLZ00.F_GET_UUID(),IN_MB,IN_DATE_PRC,IN_JZ,IN_BIANHAO,IN_REMARK1,IN_REMARK2,IN_REMARK3,
    IN_REMARK4,IN_REMARK5,IN_REMARK6,IN_REMARK7,IN_REMARK8,IN_REMARK9,IN_REMARK10);
    END IF;
END IF;

END
//
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值