今天在mysql数据库中执行一个存储过程,由于没有安装mysql数据连接工具,只好在黑框框里执行然后就遇到下面的问题:
一直说是我的存储过程的语法有问题,但是看了好久都没有看出问题,后来查了一上午资料才发生问题所在:
在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 ;