我的數據庫開發人員創建了一個存儲過程,它返回最後一個ID,但不像輸出參數。從存儲過程中取值
.
.
.
SET @NewContractSvcLID = @@IDENTITY
RETURN @NewContractSvcLID
END
如何在使用MSSQL的PHP中獲得該值? 謝謝。
注意。 我想像一個結果集(mssql_fetch_row),但用一個簡單的回聲,我看到了不同的結果,只是一個「1」。
我的數據庫開發人員創建了一個存儲過程,它返回最後一個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 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
您只需編寫即席查詢即可將結果作爲結果集返回。
DECLARE @return_value INT
EXEC @return_value = MyProcedure
SELECT @return_value
是的,但我堅持認爲,我無法修改數據庫。 – norgematos
您不需要修改數據庫,只需將該批次作爲查詢參數運行即可。類似於'mssql_query(「DECLARE return_value INT; EXEC @return_value = MyProcedure; SELECT @return_value」)' – dpw
教你的db開發者如何使用輸出參數 – brian
這會幫你嗎? http://php.net/manual/en/function.mysql-result.php – Steve
@steve是'SQL-SERVER',你可以在標籤中看到 –