Mysql存储过程

来源:互联网 发布:歼11b知乎 编辑:程序博客网 时间:2024/06/05 11:13
CALL DelAttrVal(IN ProcedureCId INT,IN ProcedurePId INT,ProcedureKeyName VARCHAR(40),OUT Succ INT)#删除同一个服务器上所在不同数据库中表中数据BEGIN #声明DECLARE StorePId INT;DECLARE delsql VARCHAR(200);DECLARE StoreCId INT DEFAULT 0;#错误处理DECLARE EXIT HANDLER FOR SQLEXCEPTIONBEGINSET @intSucc = 0;SELECT @intSucc INTO Succ;ROLLBACK;END;#赋值SET @StorePId = ProcedurePId;SET @StoreCId = ProcedureCId;#旧系统#获取公社的AttrIDCALL AttrSys.GetAttrId(ProcedureKeyName,@AId);SELECT @AId INTO @PAttrId;#新系统#获取数据库、表等信息新系统使用CALL AttrSys.AttrInit(ProcedureKeyName, @db, @tb, @md5key);SELECT @db, @tb, @md5key INTO @dbName,@tbName,@Strmd5Key;START TRANSACTION;#开启事务#新系统数据删除SET @delsql = CONCAT("Delete FROM ",@dbName,".",@tbName," WHERE `Cid` = ",@StoreCId," AND `Pid` = ",@StorePId," AND `AttrKey` = '",@Strmd5Key,"'");PREPARE stmt FROM @delsql;EXECUTE stmt;#旧系统数据删除IF @StoreCId !=0 THEN#取memberIdCALL AttrSys.getMemberId(@StoreCId, @StorePId, @mid);SELECT @mid INTO @intMemberId;SET @StorePId = @intMemberId;END IF;Delete FROM CommunityRelationSys.DataAttrVal WHERE `Pid` = @StorePId AND `AttrId` = @PAttrId;COMMIT;SET @intSucc = 1;SELECT @intSucc INTO Succ;END