下面我按从基础到实战给你讲清楚 SQL 存储过程(Stored Procedure)怎么写,以最常用的 MySQL 和 SQL Server 为例,其他数据库(Oracle / PostgreSQL)也类似。
存储过程是一段提前编译好、保存在数据库里的 SQL 代码,可以:
✅ 优点:性能好、安全、逻辑集中
DELIMITER $$
CREATE PROCEDURE 过程名(参数列表)
BEGIN
-- SQL 语句
END$$
DELIMITER ;
DELIMITER $$
CREATE PROCEDURE get_users()
BEGIN
SELECT * FROM user;
END$$
DELIMITER ;
调用:
CALL get_users();
DELIMITER $$
CREATE PROCEDURE get_user_by_id(IN uid INT)
BEGIN
SELECT * FROM user WHERE id = uid;
END$$
DELIMITER ;
调用:
CALL get_user_by_id(1);
DELIMITER $$
CREATE PROCEDURE get_user_count(OUT cnt INT)
BEGIN
SELECT COUNT(*) INTO cnt FROM user;
END$$
DELIMITER ;
调用:
CALL get_user_count(@c);
SELECT @c;
DELIMITER $$
CREATE PROCEDURE add_num(INOUT n INT)
BEGIN
SET n = n + 10;
END$$
DELIMITER ;
调用:
SET @x = 5;
CALL add_num(@x);
SELECT @x;
DELIMITER $$
CREATE PROCEDURE check_user(IN uid INT)
BEGIN
IF uid > 0 THEN
SELECT '有效用户';
ELSE
SELECT '无效用户';
END IF;
END$$
DELIMITER ;
CREATE PROCEDURE 过程名
@参数 类型
AS
BEGIN
-- SQL
END
CREATE PROCEDURE get_user
@id INT
AS
BEGIN
SELECT * FROM user WHERE id = @id
END
调用:
EXEC get_user @id = 1
✅ 修改存储过程用 ALTER PROCEDURE
✅ 删除:DROP PROCEDURE 名
✅ MySQL 必须加 DELIMITER
✅ 不要写太复杂的业务逻辑(放应用层更好)
如果你愿意,可以告诉我:
我可以直接帮你写可用的存储过程代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。