从存储过程中获取值

时间:2013-09-25 21:32:25

标签: php sql-server stored-procedures

我的数据库开发人员创建了一个存储过程,它返回最后一个ID,但不像输出参数。

.
.
.
        SET @NewContractSvcLID = @@IDENTITY
        RETURN @NewContractSvcLID
END

如何使用MSSQL在PHP中获得该值? 感谢。

请注意。 我试着像一个结果集(mssql_fetch_row),但是通过简单的回声我看到了不同的结果,只是一个“1”。

2 个答案:

答案 0 :(得分:1)

您只需编写一个即席查询即可将值作为结果集返回。

DECLARE @return_value INT
EXEC @return_value = MyProcedure
SELECT @return_value

答案 1 :(得分:1)

经过大量测试后,我找到了解决方案。我不知道它是最好的,但它确实有效。 绑定参数时,必须绑定RETVAL(返回值),然后 调用mssql_execute时,将执行存储过程,并返回输出参数的值(如果存在)以及RETVAL返回值。

注意: Type => 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 manual says: 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