2013-09-25 59 views
1

我的數據庫開發人員創建了一個存儲過程,它返回最後一個ID,但不像輸出參數。從存儲過程中取值

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

如何在使用MSSQL的PHP​​中獲得該值? 謝謝。

注意。 我想像一個結果集(mssql_fetch_row),但用一個簡單的回聲,我看到了不同的結果,只是一個「1」。

+4

教你的db開發者如何使用輸出參數 – brian

+0

這會幫你嗎? http://php.net/manual/en/function.mysql-result.php – Steve

+0

@steve是'SQL-SERVER',你可以在標籤中看到 –

回答

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 
1

您只需編寫即席查詢即可將結果作爲結果集返回。

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

是的,但我堅持認爲,我無法修改數據庫。 – norgematos

+0

您不需要修改數據庫,只需將該批次作爲查詢參數運行即可。類似於'mssql_query(「DECLARE return_value INT; EXEC @return_value = MyProcedure; SELECT @return_value」)' – dpw