1. 程式人生 > >mysql 的存儲過程_多字段

mysql 的存儲過程_多字段

then delete handle manage rem bsp open arc not

mysql 的存儲過程

一、準備工作

    新建一個表

/*
Navicat MySQL Data Transfer

Source Server : localhost_3306
Source Server Version : 50505
Source Host : localhost:3306
Source Database : kamanage

Target Server Type : MYSQL
Target Server Version : 50505
File Encoding : 65001

Date: 2018-08-31 17:43:23

*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `temp_user`
-- ----------------------------
DROP TABLE IF EXISTS `temp_user`;
CREATE TABLE `temp_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`age` int(3) DEFAULT NULL,
PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of temp_user
-- ----------------------------
INSERT INTO `temp_user` VALUES (‘4‘, ‘zhanghao‘, ‘2‘);
INSERT INTO `temp_user` VALUES (‘5‘, ‘sql‘, ‘30‘);
INSERT INTO `temp_user` VALUES (‘6‘, ‘pengpeng‘, ‘30‘);

二、存儲過程使用的範例:查找到該表裏的所有數據,並刪除

################################適用於多字段###############################

create PROCEDURE delete_data()

begin

declare name1 char(30);

declare age1 int (3);

declare end_tag int default 0;#循環結束標誌 默認是0,代表0的時候都可以循環

declare list CURSOR for select name,age from temp_user;

declare CONTINUE HANDLER for not FOUND set end_tag=1 ;#為 未找到集合 生命處理程序 ,把循環結束標誌設置為1

open list; ###打開遊標

repeat ###循環開始

FETCH list into name1,age1;#遊標開始一個一個滑動

IF not end_tag then ### if not !=1 結束符!=1 就刪除

delete from temp_user where name=name1 and age=age1;

end if;

UNTIL end_tag end repeat;#直到 end_tag=1(循環結束符值為1的時候)結束循環

end ;

call delete_data();####調用存儲過程

drop procedure delete_data;####刪除存儲過程

mysql 的存儲過程_多字段