SQL 服务器未从存储过程返回值
SQL Server not returning a value from stored procedure
我尝试使用 PHP 连接到 SQL 服务器来调用其中的过程。但是没有结果return回来。请给我一些建议。
示例存储过程:
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
PHP代码
$return = null;
$server = "LOCALHOST\SQLEXPRESS";
$connectionInfo = array( "Database"=>"SHOP", "UID"=>"sa", "PWD"=>"");
$Conn = sqlsrv_connect( $server, $connectionInfo);
$sql = "{call ? = MemberJoin(@username=?,@password=?)}";
$param = [
[&$return, SQLSRV_PARAM_OUT],
['testingsr', SQLSRV_PARAM_IN],
['12345667', SQLSRV_PARAM_IN],
];
$stmt = sqlsrv_query ( $Conn , $sql, $param );
echo($return);
结果为空,没有错误。
我希望 return 值为 1,-2 或 -3
提前致谢。
您需要声明一个变量来捕获return
值,然后检查该变量的值。下面是一个例子。
DECLARE @return_status int;
EXEC @return_status = dbo.sproc_checkstate;
SELECT 'Return Status' = @return_status;
对于您正在做的事情,return 专栏可能更容易。例如,您可以将 RETURN -2
更改为 SELECT -2 as return_status
并将 return 值更改为结果集中的 return_status 列。
我尝试使用 PHP 连接到 SQL 服务器来调用其中的过程。但是没有结果return回来。请给我一些建议。
示例存储过程:
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
PHP代码
$return = null;
$server = "LOCALHOST\SQLEXPRESS";
$connectionInfo = array( "Database"=>"SHOP", "UID"=>"sa", "PWD"=>"");
$Conn = sqlsrv_connect( $server, $connectionInfo);
$sql = "{call ? = MemberJoin(@username=?,@password=?)}";
$param = [
[&$return, SQLSRV_PARAM_OUT],
['testingsr', SQLSRV_PARAM_IN],
['12345667', SQLSRV_PARAM_IN],
];
$stmt = sqlsrv_query ( $Conn , $sql, $param );
echo($return);
结果为空,没有错误。 我希望 return 值为 1,-2 或 -3
提前致谢。
您需要声明一个变量来捕获return
值,然后检查该变量的值。下面是一个例子。
DECLARE @return_status int;
EXEC @return_status = dbo.sproc_checkstate;
SELECT 'Return Status' = @return_status;
对于您正在做的事情,return 专栏可能更容易。例如,您可以将 RETURN -2
更改为 SELECT -2 as return_status
并将 return 值更改为结果集中的 return_status 列。