我的数据库开发人员创建了一个存储过程,它返回最后一个ID,但不像输出参数。
.
.
.
SET @NewContractSvcLID = @@IDENTITY
RETURN @NewContractSvcLID
END
如何使用MSSQL在PHP中获取该值?谢谢。
注意。我尝试像结果集(mssql_fetch_row)一样,但通过一个简单的回声,我看到了不同的结果,只是一个"1"。
经过大量测试,我找到了解决方案。我不知道这是最好的,但它有效。当你绑定参数时,你必须绑定RETVAL
(返回值),然后调用 mssql_execute 时,将执行存储过程,并返回输出参数的值(如果存在)以及 RETVAL 返回值。
注意:类型 => SQLINT4 假设值为 INT
例:
$stmt = mssql_init($your_sp_name);
mssql_bind($stmt, "RETVAL",$return_value, SQLINT4);
$result = mssql_execute($stmt);
echo $return_value;//output your return value
手册上说:The PHP variable you'll bind the MSSQL parameter to. It is passed by reference, to retrieve OUTPUT and RETVAL values after the procedure execution.
但是当我通过引用传递变量时,会得到错误 500。
mssql_bind($stmt, "RETVAL",&$return_value, SQLINT4);//get error 500
mssql_bind($stmt, "RETVAL",$return_value, SQLINT4);//this will works
只需编写一个即席查询即可将值作为结果集返回。
DECLARE @return_value INT
EXEC @return_value = MyProcedure
SELECT @return_value