mysql 存储过程脚本案例_mysql 存储过程案例

drop PROCEDURE if exists test_20200429;

CREATE PROCEDURE `test_20200429`()

begin

DECLARE num INT DEFAULT 0;

declare v_sql_0 varchar(500);

declare mainId BIGINT;

declare faren varchar(500);

declare data_list cursor for SELECT rid FROM TD_ZY_UNITBASICINFO WHERE LEGAL_PERSON = '1' ;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET num=1;

open data_list ;

fetch data_list into mainId;

while num <> 1 do

-- 使用max函数防止N/A,导致无法用null判断;注意字符串 !="1" 是双引号

SET v_sql_0 = CONCAT('SELECT MAX(T.LEGAL_PERSON) into @param1 FROM TD_ZY_UNITBASICINFO2 T WHERE T.LEGAL_PERSON !="1" and T.DECLARE_STATUS =3 and T.MAIN_ID = ',mainId,' ORDER BY T.DECLARE_DATE DESC LIMIT 1');

SET @sql_0 = v_sql_0;

-- 预处理需要执行的动态SQL,其中stmt是一个变量

PREPARE stmt0 FROM @sql_0;

-- 执行SQL语句

EXECUTE stmt0;

-- 释放掉预处理段

DEALLOCATE PREPARE stmt0;

-- @param1赋值给rid

SET faren = @param1;

-- null 判断的方式

if faren is not null then

UPDATE TD_ZY_UNITBASICINFO set LEGAL_PERSON = faren wHERE rid = mainId;

end if;

fetch data_list into mainId;

end while;

close data_list;

end;

call test_20200429();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值