php - SQL Server 未从存储过程返回值
问题描述
我尝试使用 PHP 连接到 SQL Server 在其中调用一个过程。但是没有结果返回。请给我一些建议。
示例存储过程:
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);
结果 null 没有错误。我希望返回值为 1、-2 或 -3
先感谢您。
解决方案
您需要声明一个变量来捕获该return
值,然后检查该变量的值。下面是一个例子。
DECLARE @return_status int;
EXEC @return_status = dbo.sproc_checkstate;
SELECT 'Return Status' = @return_status;
对于您正在做的事情,返回一列可能更容易。例如,您可以将值更改RETURN -2
为结果集中的return_status列SELECT -2 as return_status
并将其返回。
推荐阅读
- aem - 组 AEM (6.2) 组件配置
- python - 无法从字典中获取值
- python - RuntimeError:无效参数 0:张量的大小必须匹配,但维度 0 除外。得到维度 1 中的 3 和 1
- javascript - Apps 脚本:过滤掉数组中的空元素
- python - 在字典中添加新条目会还原先前输入的条目属性的值
- sql-server - 内连接和填充和搜索
- java - Selenium 日历:月份和日期选择:我做错了什么
- python - Python中给定度数数组中有关摄氏到华氏转置的元组的列表表达式
- bash - 将 API_KEY 存储在 env var 中并在播放列表 URL 中使用
- laravel - 如何从环境变量中设置侦听器队列名称?