MySQL 通过存储过程简化INSERT和UPDATE

2015-07-16 12:10:01 · 作者: · 浏览: 23

MySQL 通过存储过程简化INSERT和UPDATE


处理目的,当数据表中存在目标记录时,执行UPDATE;当数据表中不存在目标记录时,执行INSERT;从而减少一次查询数据库的过程


存储过程设计如下:


CREATE PROCEDURE `pro_SaveData`(IN `sinst` varchar(500),IN `supdt` varchar(500))
BEGIN
?#直接更新记录
? ? set @v_updsql=supdt;?
? ? prepare stmt from @v_updsql;?
? ? EXECUTE stmt;? ? ?
? ?
?#记录不存在,执行INSERT
?IF ROW_COUNT() =0 THEN
? ?set @v_intsql=sinst;
? ? prepare stmt from @v_intsql;
? ? EXECUTE stmt;? ? ?
?END IF;
deallocate prepare stmt;? ?
END;


C#调用如下:


int r = data.ExecuteNonQuery(System.Data.CommandType.StoredProcedure,
? ? ? ? ? ? ? ? @"CALL pro_SaveData (' INSERT INTO `table` VALUES ('1', 'username')',
? ? ? ? ? ? ? ? 'UPDATE table SET name='table222' WHERE id='1';')", null);