1 /* 2 SQLyog Ultimate v12.3.2 (64 bit) 3 MySQL - 5.5.13 : Database - test 4 ********************************************************************* 5 */ 6 7 8 /*!40101 SET NAMES utf8 */; 9 10 /*!40101 SET SQL_MODE=''*/; 11 12 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 13 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 14 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 15 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; 16 CREATE DATABASE /*!32312 IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET utf8 */; 17 18 USE `test`; 19 20 /*Table structure for table `depart` */ 21 22 DROP TABLE IF EXISTS `depart`; 23 24 CREATE TABLE `depart` ( 25 `did` char(1) NOT NULL, 26 `dname` varchar(20) DEFAULT NULL, 27 `dmaster` char(3) DEFAULT NULL, 28 `droom` char(10) DEFAULT NULL, 29 PRIMARY KEY (`did`) 30 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 31 32 /*Data for the table `depart` */ 33 34 insert into `depart`(`did`,`dname`,`dmaster`,`droom`) values 35 36 ('1','财务部','003','2201'), 37 38 ('2','人事处','005','2209'), 39 40 ('3','市场部','009','3201'), 41 42 ('4','开发部','001','3206'), 43 44 ('5','科研部','002','4201'), 45 46 ('6','宣传部','004','4202'), 47 48 ('7','工会','006','4203'); 49 50 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; 51 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; 52 /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; 53 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; 54 55 56 -- 带输出参数的存储过程 57 DELIMITER $$ 58 #DROP PROCEDURE IF EXISTS test_sp3 59 CREATE PROCEDURE test_sp3(IN id CHAR(1),IN dn VARCHAR(20),IN dm CHAR(3),IN dr CHAR(10),OUT err INT) 60 BEGIN 61 DECLARE t_error INTEGER DEFAULT 0; -- 设置一个事务标识位 62 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; -- 声明一个sql异常,当触发这个异常时,把标识位置为1 63 64 START TRANSACTION; 65 INSERT INTO depart VALUES(id,dn,dm,dr); 66 IF t_error = 1 THEN -- 标识位为1,事务回滚 67 ROLLBACK; 68 ELSE -- 为0提交事务 69 COMMIT; 70 END IF; 71 SET err=t_error; -- 返回标识位的结果集;(1.代表回滚 0.代表提交) 72 END$$ 73 DELIMITER ; 74 75 CALL test_sp3('4','开发部','001','3206',@m); 76 SELECT @m;