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]

posted on   yingchen  阅读(258)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· 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

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示