创建存储过程
存储过程和定义函数相似,使用CREATE PROCEDURE 存储名(),BEGIN 和 END之间为“函数体”。
CREATE TABLE Blog ( author VARCHAR(25), blog TEXT, createat DATETIME, updateat TIMESTAMP )
-- 创建存储过程 CREATE PROCEDURE Blog_author() BEGIN SELECT COUNT(*) AS number FROM Blog; END
注意:默认的mysql语句分隔符为;如果命令行要解释存储过程自身的;字符,则它们最终不会成为存储过程的成分,这会使得存储过程中的sql语句出现错误。上面的创建存储过程语句可能会出现错误,可以使用下面的编写方式:
DELIMITER // CREATE PROCEDURE Blog_author() BEGIN SELECT COUNT(*) AS number FROM Blog; END // DELIMITER;
DELIMITER //告诉命令行使用//作为新的语句结束符,可以看到标志存储过程结束的END定义为END //。这样存储过程体内的;仍然保持不动,并且正确地传递给数据库引擎。最后使用DELIMITER ;来恢复分隔符为;
带参数的存储过程
使用OUT定义传出参数,使用IN定义传入参数。使用INTO将数据保存到参数中。
DELIMITER // CREATE PROCEDURE Blog_blog(OUT content TEXT, IN `name` VARCHAR(25)) BEGIN SELECT blog INTO content FROM Blog WHERE author = `name`; END // DELIMITER;
调用存储过程
使用CALL 存储名来调用存储过程,其中传入的参数变量使用@开头,后面为变量名。数据会右存储过程体内的INTO语句保存到变量中,然后使用select @变量名查看变量内容。
CALL Blog_blog(@content, '大帝石3'); SELECT @content;
存储过程体内的一些使用
在存储过程体内定义局部变量
使用DECLARE 来定义局部变量。
删除存储过程
使用DROP PROCEDURE 存储名来删除定义的存储过程。如果不存在,则DROP PROCEDURE会产生一个错误。因此可以使用 DROP PROCEDURE IF EXISTS.
标签:存储,END,游标,Blog,DELIMITER,mysql,过程,PROCEDURE From: https://www.cnblogs.com/dadishi/p/17067842.html