温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

存储过程如何创建

发布时间:2026-09-03 06:15:37 来源:亿速云 阅读:93 作者:小樊 栏目:数据库

下面以最常见的关系型数据库为例,说明存储过程(Stored Procedure)如何创建,并给出通用写法与示例。


一、什么是存储过程

存储过程是预先编译并存储在数据库中的一段 SQL 逻辑,可以:

  • 接收参数(输入 / 输出)
  • 执行多条 SQL
  • 提高性能、复用代码、保证数据安全

二、MySQL 创建存储过程

1️⃣ 基本语法

DELIMITER $$

CREATE PROCEDURE 存储过程名([参数列表])
BEGIN
    -- SQL 逻辑
END $$

DELIMITER ;

2️⃣ 示例:根据用户ID查询用户信息

DELIMITER $$

CREATE PROCEDURE get_user_by_id(IN uid INT)
BEGIN
    SELECT * FROM user WHERE id = uid;
END $$

DELIMITER ;

3️⃣ 调用方式

CALL get_user_by_id(1);

三、SQL Server 创建存储过程

1️⃣ 基本语法

CREATE PROCEDURE 存储过程名
    @参数 数据类型
AS
BEGIN
    -- SQL 逻辑
END

2️⃣ 示例

CREATE PROCEDURE get_user_by_id
    @uid INT
AS
BEGIN
    SELECT * FROM [user] WHERE id = @uid;
END

3️⃣ 调用

EXEC get_user_by_id 1;

四、Oracle 创建存储过程

1️⃣ 基本语法

CREATE OR REPLACE PROCEDURE 存储过程名(
    参数名 IN 数据类型
) AS
BEGIN
    -- SQL 逻辑
END;

2️⃣ 示例

CREATE OR REPLACE PROCEDURE get_user_by_id(
    p_uid IN NUMBER
) AS
BEGIN
    SELECT * FROM "user" WHERE id = p_uid;
END;

3️⃣ 调用

EXEC get_user_by_id(1);

五、带输出参数的示例(MySQL)

DELIMITER $$

CREATE PROCEDURE get_user_count(OUT total INT)
BEGIN
    SELECT COUNT(*) INTO total FROM user;
END $$

DELIMITER ;

调用:

CALL get_user_count(@cnt);
SELECT @cnt;

六、常见注意点

✅ 存储过程名要有意义
✅ 参数要明确 IN / OUT
✅ 避免复杂业务逻辑全部写在数据库
✅ 注意权限控制


如果你告诉我:

  • 使用的数据库(MySQL / Oracle / SQL Server / PostgreSQL)
  • 具体业务场景

我可以直接帮你写可用的存储过程代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手