今天在mysql数据库中执行一个存储过程,因为没有安装mysql数据链接工具,只好在黑框框里执行而后就遇到下面的问题:mysql
一直说是个人存储过程的语法有问题,可是看了很久都没有看出问题,后来查了一上午资料才发生问题所在:sql
在mysql中“;”会默认为是一句sql语句的结束,因此在使用source命令执行数据库脚本时,遇到“;”符号时,数据库会认为你一句sql语句写完了,他会自动执行这句,这时候就出问题了,要解决这个问题能够使用DELIMITER命令来自定义语句的结束标志,而后就能够顺利执行存储过程了。记得在存储过程最后把语句结束标志在改回来。数据库
例:工具
-- ---------------------------- -- Procedure structure for `proc_adder` -- ---------------------------- DROP PROCEDURE IF EXISTS `proc_adder`; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_adder`(IN a int, IN b int, OUT sum int) BEGIN #Routine body goes here... DECLARE c int; if a is null then set a = 0; end if; if b is null then set b = 0; end if; set sum = a + b; END ;; DELIMITER ;