【问题标题】:Taking a value from a Stored Procedure [closed]从存储过程中获取值[关闭]
【发布时间】:2013-09-25 21:32:25
【问题描述】:

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

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

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

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

【问题讨论】:

  • 教你的数据库开发者如何使用输出参数
  • @steve 是 SQL-SERVER,正如您在标签中看到的那样
  • @Steve,我的问题是关于 MS SQL。无论如何,我想从存储过程中得到结果。所以,你的评论没有帮助。对不起。
  • 对不起,我以为您的问题是关于通过您的 PHP 代码获取 MSSQL 返回值。既然您的问题是“我如何使用 MSSQL 在 PHP 中获得该值?”我的错。

标签: php sql-server stored-procedures


【解决方案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

【讨论】:

    【解决方案2】:

    您可以只编写一个临时查询以将值作为结果集返回。

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

    【讨论】:

    • 是的,但我坚持,我不能修改数据库。
    • 您不需要修改数据库,只需将整个批次作为查询参数运行即可。类似mssql_query("DECLARE return_value INT; EXEC @return_value = MyProcedure; SELECT @return_value")
    猜你喜欢
    • 2017-01-01
    • 2011-04-26
    • 2013-01-22
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2017-01-18
    相关资源
    最近更新 更多