You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL存储过程执行返回值0问题:如何设置自定义返回值?

自定义SQL Server存储过程返回值的解决方案

嘿,我来帮你搞定这个问题!你说的没错,SQL Server存储过程默认执行成功会返回0,但我们完全可以自定义这个返回值,甚至返回更多类型的结果。下面分两种常见场景给你具体的修改方案:

一、用RETURN语句返回整数值(适合状态码、结果行数这类整数型返回值)

如果你的需求是返回一个整数(比如查询到的项目数量、自定义的状态码),可以直接在存储过程末尾添加RETURN语句。这里以返回查询结果的行数为例,修改你的存储过程:

USE [Active]
GO
/****** Object:  StoredProcedure [dbo].[PS_BR_listeProjetUneEntreprise]    Script Date: 11/04/2018 13:39:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      BR
-- Create date: 11/04/2018
-- Description: 返回指定企业的项目列表,并返回结果行数作为自定义返回值
-- =============================================
ALTER PROCEDURE [dbo].[PS_BR_listeProjetUneEntreprise]
    -- 请根据你的实际需求添加存储过程参数,比如企业ID
    @EntrepriseID INT
AS
BEGIN
    SET NOCOUNT ON; -- 关闭默认的影响行数提示,避免干扰返回值

    -- 执行你的核心查询,获取项目列表
    SELECT * FROM VotreTableProjet WHERE EntrepriseID = @EntrepriseID; -- 替换成你的实际表和条件

    -- 统计查询返回的行数
    DECLARE @ResultRowCount INT;
    SET @ResultRowCount = @@ROWCOUNT;

    -- 返回自定义的整数值(这里是结果行数)
    RETURN @ResultRowCount;
END
GO

调用方式(获取返回值):

DECLARE @CustomReturnValue INT;
-- 执行存储过程并接收返回值
EXEC @CustomReturnValue = [dbo].[PS_BR_listeProjetUneEntreprise] @EntrepriseID = 123; -- 替换成你的实际参数值
-- 查看自定义返回值
SELECT @CustomReturnValue AS '自定义返回值';

二、用输出参数返回非整数/多值(适合返回字符串、多个结果的场景)

如果需要返回字符串描述、或者同时返回多个值,推荐使用输出参数。比如返回查询结果的状态描述:

USE [Active]
GO
/****** Object:  StoredProcedure [dbo].[PS_BR_listeProjetUneEntreprise]    Script Date: 11/04/2018 13:39:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      BR
-- Create date: 11/04/2018
-- Description: 返回指定企业的项目列表,并通过输出参数返回状态信息
-- =============================================
ALTER PROCEDURE [dbo].[PS_BR_listeProjetUneEntreprise]
    @EntrepriseID INT,
    @StatusMessage VARCHAR(100) OUTPUT -- 定义输出参数
AS
BEGIN
    SET NOCOUNT ON;

    -- 执行查询
    SELECT * FROM VotreTableProjet WHERE EntrepriseID = @EntrepriseID;

    DECLARE @RowCount INT = @@ROWCOUNT;

    -- 根据结果设置输出参数的值
    IF @RowCount > 0
        SET @StatusMessage = '成功获取 ' + CAST(@RowCount AS VARCHAR) + ' 个项目';
    ELSE
        SET @StatusMessage = '未找到该企业的任何项目';
END
GO

调用方式(获取输出参数):

DECLARE @OutputMsg VARCHAR(100);
-- 执行存储过程并传入输出参数
EXEC [dbo].[PS_BR_listeProjetUneEntreprise] 
    @EntrepriseID = 123, 
    @StatusMessage = @OutputMsg OUTPUT;
-- 查看返回的状态信息
SELECT @OutputMsg AS '自定义返回信息';

注意事项

  • 如果是修改已存在的存储过程,用ALTER PROCEDURE;如果是新建,用CREATE PROCEDURE。
  • SET NOCOUNT ON是个好习惯,它会关闭SQL Server默认返回的“影响行数”消息,避免客户端混淆这个数值和你的自定义返回值。
  • RETURN语句只能返回整数,如果你需要返回其他类型(比如字符串、日期),一定要用输出参数。

内容的提问来源于stack exchange,提问作者Romain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:27:51