SQL Server不从存储过程返回值

问题描述

我尝试使用PHP连接到sql Server,以在其中调用过程。但是没有结果返回。请给我一些建议。

示例存储过程:

struct tm

PHP代码

ALTER  PROCEDURE [MemberJoin]
    @username varchar(25),@password varchar(50),AS
If (EXISTS(SELECT username FROM tbl_user WHERE username = @username ))
    Begin
        RETURN -2
    End
BEGIN TRANSACTION
BEGIN
   INSERT INTO tbl_user (username,password ) VALUES (@username,@password)
    If (@@ERROR <> 0 OR @@ROWCOUNT = 0)
    Begin
        ROLLBACK TRANSACTION
        RETURN -3
    End
COMMIT TRANSACTION
END

RETURN 1

结果为null,无错误。 我希望返回值为1,-2或-3

谢谢。

解决方法

您需要声明一个变量以捕获return的值,然后检查该变量的值。下面是一个示例。

DECLARE @return_status int;  
EXEC @return_status = dbo.sproc_checkstate;  
SELECT 'Return Status' = @return_status;

对于您正在做的事情,返回一列可能会更容易。例如,您可以将RETURN -2更改为SELECT -2 as return_status并将值作为结果集中的 return_status 列返回。