可以的,存储过程(Stored Procedure)是可以返回结果的,不过“返回结果”的方式和具体的数据库系统有关。下面按常见情况说明:
存储过程内部执行 SELECT,调用方会直接收到结果集。
示例(MySQL / SQL Server 类似):
CREATE PROCEDURE get_users()
BEGIN
SELECT id, name FROM user;
END;
调用:
CALL get_users();
✅ 适合:查询类操作
✅ 可返回多行多列
适用于返回一个状态、计数、ID 等。
示例(MySQL):
CREATE PROCEDURE add_user(
IN p_name VARCHAR(50),
OUT p_id INT
)
BEGIN
INSERT INTO user(name) VALUES(p_name);
SET p_id = LAST_INSERT_ID();
END;
调用:
CALL add_user('Tom', @id);
SELECT @id;
✅ 适合:返回单个结果
如 SQL Server 支持 RETURN 返回整型状态值。
CREATE PROCEDURE check_user
AS
BEGIN
RETURN 1;
END;
调用:
DECLARE @r INT;
EXEC @r = check_user;
⚠️ 一般只用于返回状态码,不是业务数据
某些数据库(如 SQL Server、Oracle)支持返回多个 SELECT 结果集。
| 数据库 | 返回结果方式 |
|---|---|
| MySQL | SELECT / OUT 参数 |
| SQL Server | SELECT / OUT / RETURN |
| Oracle | OUT 游标(REF CURSOR) |
| PostgreSQL | RETURNS TABLE / REFCURSOR |
存储过程可以返回结果,常见方式是结果集、OUT 参数或返回值,具体取决于数据库类型和设计需求。
如果你能告诉我用的是 哪种数据库(MySQL / Oracle / SQL Server 等),我可以给你更精准的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。