【mysql】使用mysql数据库存储过程call 实例:保存任务工作单方法实现

使用mysql数据库存储过程 实例:保存任务工作单方法实现

点击“保存”的时候,创建任务工作单

任务工作单表

CREATE TABLE `tn_work_task` (
  `task_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务单号',
  `task_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '(0新增1修改2解冻3冻结)',
  `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '编制0审核1通过2退回3终止4上传5',
  `applicant_id` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '申请人工号',
  `factory_id` varchar(4) NOT NULL COMMENT '申请工厂编号',
  `apply_count` int DEFAULT '0' COMMENT '申请条目个数',
  `apply_time` datetime DEFAULT NULL COMMENT '申请时间',
  `end_time` datetime DEFAULT NULL COMMENT '结束时间',
  `current_wf_instance` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '当前流程实例ID',
  `create_by` varchar(20) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(20) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标记 0正常 1删除',
  PRIMARY KEY (`task_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='申请工作单表';

调用的创建任务单方法:

image-20221031153909279

image-20221031154109825

MySQL的存储过程(call):

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能。

目的:提高执行效率和SQL 代码封装

如果没有存储过程,在外部程序访问数据库时,要组织很多 SQL 语句。特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在代码中
有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高。

存储过程语句:

# 查询当前数据库有哪些存储过程
show procedure status where db = 'tn_mdm_test';

SHOW procedure STATUS WHERE db = 'tn_mdm_test' and NAME='insert_create_work_task';

# 创建一个简单的存储过程
create procedure hi() select 'hello';

# 存储过程创建完成,看怎么调用他

call hi();


# 删除数据库中存在的存储过程
drop PROCEDURE if exists hi

# 创建存储过程函数

# 查看存储过程函数

实例:

image-20221031161156775

业务逻辑存储过程函数:

CREATE DEFINER=`root`@`%` PROCEDURE `insert_create_work_task`(
IN p_taskType VARCHAR(20),
IN p_status VARCHAR(20),
IN p_applicantId VARCHAR(30),
IN p_factoryId VARCHAR(4),
IN p_applyCount INT,
OUT p_task_id VARCHAR(20))
BEGIN
	DECLARE ftaskId VARCHAR(20);
	DECLARE fsn VARCHAR(10);
	DECLARE fdate VARCHAR(10);
	DECLARE fint INT;
	SET @fsn = 'WT';
	CALL for_sn_kt(@fsn,@fdate,@fint);
	SET ftaskId = CONCAT(@fsn,REPLACE(@fdate, "-", ""),LPAD(@fint, 3, 0));
	SET @ctime = NOW();
	INSERT INTO tn_work_task
	(task_id, task_type, status, applicant_id, factory_id, apply_count,create_time)
	VALUES(ftaskId, p_taskType, p_status, p_applicantId, p_factoryId, p_applyCount,@ctime);
	SET p_task_id = ftaskId; 
END

image-20221031165631221

image-20221031165740905

函数在这看:

image-20221031171515473

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋大米Pro

感谢小主大赏,留言可进互助群~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值