创建不带参数的存储过程
Create procedure sp1() select version(); //创建一个存储过程用来查看系统
调用过程:
CALL sp1;
CALL sp1();
DESC users;
DELIMITER //
CREATE PROCEDURE removeUserByID(IN id INT UNSIGNED)
BEGIN
DELETE FROM users WHERE id = id;
END//
DELIMITER ;
CALL removeUserById(3); //参数名称最好不要和表中的字段相同
SELECT FROM users; //全删除了
注:参数名不要用和表中字段相同的名字,否则全部删了
DELIMITER //
CREATE PROCEDURE removeUserById(IN p_id INT UNSIGNED)
BEGIN DELETE FROM users WHERE id = p_id;
END//
DELIMITER ;
SELECT FROM users;
CALL removeUserById(22);
SELECT * FROM users WHERE id = 22;
2.修改存储过程
ALTER PROCEDURE sp_name [characteristic]
COMMENT 'string'
|{CONTAINS SQL|NO SQL|READS SQL DATA|MODIFIES SQL DATA}
|SQL SECURITY{DEFINER|INVOKER}
3.删除存储过程
DROP PROCEDURE [IF EXISTS] sp_name;
DROP removeUserById;
创建带有IN和OUT类型参数的存储过程
- SELECT COUNT(id) FROM users INTO userNums; 通过 INTO 将COUNT(id)的值赋予参数userNums;
- 调用过程
--> CALL removeUserAndReturnUserNums(27,@nums); 将返回值传至@nums。
--> SELECT @nums; 显示结果。 - 如上所示,用@声明的变量叫做用户变量(例如@nums),只在当前客户端生效。
- 自己写代码时犯的错误:忘了加关键词IN 和 OUT ,导致用户变量的返回值为NULL。
共同学习,写下你的评论
评论加载中...
作者其他优质文章