温馨提示×

温馨提示×

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

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

存储过程能返回值吗

发布时间:2026-10-14 08:55:56 来源:亿速云 阅读:90 作者:小樊 栏目:数据库

简短回答:存储过程本身通常不“返回”一个值(像函数那样),但可以通过多种方式把结果“传出去”。

下面按常见数据库分别说明:


1. MySQL

  • 存储过程不能直接 return 一个值
  • 只能通过:
    • OUT / INOUT 参数
    • SELECT 结果集

示例:

CREATE PROCEDURE p1(OUT ret INT)
BEGIN
  SET ret = 100;
END;

调用:

CALL p1(@r);
SELECT @r;

✅ MySQL 有 函数(FUNCTION) 才能 RETURN 值


2. SQL Server

  • 存储过程可以用 RETURN 返回一个 整型状态值
  • 更常用的是 OUTPUT 参数

示例:

CREATE PROCEDURE p1
  @ret INT OUTPUT
AS
BEGIN
  SET @ret = 10
END

或者:

CREATE PROCEDURE p2
AS
BEGIN
  RETURN 0
END

⚠️ RETURN 只能返回 INT,且一般表示执行状态


3. Oracle

  • 存储过程不能直接返回值
  • 使用 OUT 参数
  • 如果是函数,才用 RETURN
CREATE PROCEDURE p1(ret OUT NUMBER) IS
BEGIN
  ret := 5;
END;

4. PostgreSQL

  • 存储过程(PROCEDURE)用 CALL,不返回值
  • 函数(FUNCTION)用 RETURN
CREATE FUNCTION f1() RETURNS INT AS $$
BEGIN
  RETURN 1;
END;
$$ LANGUAGE plpgsql;

总结对照表

数据库 存储过程返回值 推荐方式
MySQL ❌ OUT 参数 / SELECT
SQL Server ✅(INT) OUTPUT 参数
Oracle ❌ OUT 参数
PostgreSQL ❌ 用 FUNCTION

如果你能告诉我用的什么数据库 + 使用场景(状态 / 查询结果 / 计算结果),我可以直接给你最合适的写法。

向AI问一下细节

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

AI
助
手