mysql 存储过程
数据库的存储过程在正常的线上应用是不会用到了,至少在我工作的这么些年,很少再遇到存储过程。
但在现实的测试过程中,为了快速修改一些数据,还是需要使用到存储过程。
设置的参数的IN, OUT, INOUT
IN 表示调用者向过程传入值, OUT 表示过程向调用者传出值, INOUT 前两者的结合
create procedure in_param(in p_in int)
begin
select p_in;
set p_in = 2 ;
select p_in;
end
set @p_in = 1;
call in_param(@p_in)
declare 定义变量,需要在存储过程中开始
DECLARE l_int int unsingned default 3000;
set @y = 'good bye'
自己在实际测试过程中,为了快速修改数据:
# 修改订单、订单还款计划的起息日,止息日,还款时间,将所有的时间往前推 @days 天, @order_id修改具体的订单;
drop PROCEDURE if EXISTS change_date;
CREATE PROCEDURE change_date()
begin
set @days = 30;
set @order_id = 329221048420433920;
UPDATE inve**nt.order_**ord set s**e = @days where order_id = @order_id;
UPDATE inve**nt.order_**ord set fin**ype = @days where order_id = @order_id;
UPDATE inv**nt.order_**ord set **_time = **_time - @days*86400000, start_**_date = start_**t_date - @days*86400000, end_**_date = end_**_date - @days*86400000
, repa**_date = repa**_date - @days*86400000 , mo**_time = mo**_time - @days*86400000 where order_id =@order_id ;
UPDATE inv**nt.order_**ent set start_**_date = start_**_date - @days*86400000 , end_**date = end_**t_date - @days*86400000,
**_date = **_date - @days*86400000 , **_time =**_time - @days*86400000, **_time = **_time - @days*86400000 where order_id = @order_id ;
COMMIT;
end;
调用:
CALL change_date();
有时候在进行一些循环操作数据的时候也是可以使用到存储过程的。
mysql 存储过程:https://www.runoob.com/w3cnote/mysql-stored-procedure.html
CREATE [DEFINER = { user | CURRENT_USER }] PROCEDUREsp_name([proc_parameter[,...]]) [characteristic ...] routine_bodyproc_parameter: [ IN | OUT | INOUT ] param_nametypecharacteristic: COMMENT'string' | LANGUAGESQL | [NOT] DETERMINISTIC | { CONTAINSSQL | NOSQL | READSSQLDATA | MODIFIESSQLDATA } | SQLSECURITY { DEFINER | INVOKER } routine_body: ValidSQLroutinestatement [begin_label:] BEGIN [statement_list] …… END [end_label]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY