如何在存储过程中返回语句

时间:2015-09-24 06:43:59

标签: c# sql-server stored-procedures

这是我的程序:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[uspChangeMemberRole]
    @TeamID INT,
    @MemberID INT,
    @MemberRole TINYINT
AS 
BEGIN
    SET NOCOUNT ON;

    UPDATE [dbo].[TeamMember] 
    SET MemberRole = @MemberRole 
    WHERE TeamID = @TeamID 
      AND MemberID = @MemberID;

    RETURN @MemberRole;
END

当我执行此程序时,我想返回" MemberRole已成功更改"。

请给我一个如何返回的解决方案

3 个答案:

答案 0 :(得分:0)

使用Row Count检查是否存在受影响的行(如果更新成功则识别出来),然后选择一个字符串。

  

RowCount - 返回受最后一个语句影响的行数。

IF @@ROWCOUNT > 0
BEGIN
   SELECT 'Member Role Successfully Chnaged';
END

我认为这个语句不是必需的,因为这是一个输入参数,你可以在proc之外。

return @MemberRole;

答案 1 :(得分:0)

将返回值更改为select,并将输出参数的数据类型替换为varchar。

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO

    ALTER PROCEDURE [dbo].[uspChangeMemberRole]
    @TeamID INT,
    @MemberID INT,
    @MemberRole VARCHAR(100) OUTPUT
    AS BEGIN

    SET NOCOUNT ON;

    UPDATE [dbo].[TeamMember] SET MemberRole=@MemberRole WHERE TeamID=@TeamID AND MemberID=@MemberID;

    SET @MemberRole = 'MemberRole Successfully Changed.'

    SELECT @MemberRole AS 'RETURN';

答案 2 :(得分:0)

我添加了一些概念,可以帮助您了解过程的将如何返回值。

  1. 如果要将某些内容从SQL Server返回到前端,请使用“选择”语句。
  2. 你必须使用来自前端的正确命令,就像你想要返回标量值或查询一样。