关于mysql存储过程和事务的处理

鉴于最近的一个项目里自己后台搭的和shi一样,不得不转换一些操作到存储过程上,

但是,见鬼的地方来了——

360文库和百度搜索果然靠不住,mysql的语法也是有点鬼,

谨以此文祭奠我浪费的一个下午


CREATE  PROCEDURE Update_Company

(INOUT _CompanyId INT,_Name VARCHAR(100),_Address VARCHAR(200),

_Scale INT,_RegisterNo CHAR(18),_License VARCHAR(300),_Corporate CHAR(20),

_Introduction VARCHAR(600),_BussinessScopes VARCHAR(600),_UserId INT )

BEGIN

DECLARE tempId INT;

DECLARE t_error INTEGER  DEFAULT 0;

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error =1;

START TRANSACTION;

UPDATE company

SET Status=0

WHERE CompanyId= _CompanyId;

INSERT INTO company (Name,Address,Scale,RegisterNo,License,Corporate,Introduction,BusinessScope,Status,UserId)

VALUE(_Name,_Address,_Scale,_RegisterNo,_License,_Corporate,_Introduction,_BussinessScopes,1,_UserId);

SET tempId =last_insert_id();

UPDATE company_apply_record

SET CompanyId= tempId

WHERE CompanyId= _CompanyId;

UPDATE recruitment

SET CompanyId= tempId

WHERE CompanyId= _CompanyId;

SET _CompanyId = tempId;

IF t_error <>0

THEN ROLLBACK;

ELSE COMMIT;

END IF;

SELECT t_error;

END;

你可能感兴趣的:(关于mysql存储过程和事务的处理)