0
對不起,我的英文很差。這裏的問題是:我試圖通過sqlsrv驅動程序,SP和輸出參數從sql server express 2014中的表中獲取PHP中的ID。在使用sqlsrv(PHP)的SP中輸出參數遇到問題
當我執行de SP並通過SSMS打印輸出參數時,一切正常。但是,當我從PHP調用SP時,SP會執行,但輸出參數不會更改。
這是SP:
ALTER PROCEDURE [dbo].[SiguientePaciente](
@IdExamen int OUTPUT
) AS
BEGIN
SET NOCOUNT ON
SET @IdExamen = (SELECT TOP 1 T.IdExamen FROM TURNOS T WHERE T.Estado = 0 ORDER BY T.FechaHora ASC)
UPDATE TURNOS SET Estado = 1 WHERE IdExamen = @IdExamen
RETURN
END
這是PHP,假設$conexion
作品:
$idExamen = 0;
$sql = "{CALL SiguientePaciente (?)}";
$params = [&$idExamen, SQLSRV_PARAM_OUT, SQLSRV_PHPTYPE_INT, SQLSRV_SQLTYPE_INT];
$stmt = sqlsrv_query($conexion, $sql, $params);
if($stmt !== false){
//sqlsrv_next_result($stmt);
echo $idExamen;
}
else
echo print_r(sqlsrv_errors(), true);
最後,echo $idExamen
打印0
編輯:發現一個替代方式來做我想做的事情,用一個SELECT插件理想的SP。然後我就取德結果PHP
ALTER PROCEDURE [dbo].[SiguientePaciente](
@IdExamen int OUTPUT
) AS
BEGIN
SET NOCOUNT ON
SET @IdExamen = (SELECT TOP 1 T.IdExamen FROM TURNOS T WHERE T.Estado = 0 ORDER BY T.FechaHora ASC)
UPDATE TURNOS SET Estado = 1 WHERE IdExamen = @IdExamen
SELECT @IdExamen AS IdExamen
RETURN;
END
呃,奇怪,我想我讀了一些關於使用'&'的地方。我只是嘗試了你所說的,沒有任何東西。我設法通過在SP中添加SELECT子句並獲取結果來完成此操作。然而,這只是一種替代方法,因此不是在這一點上的答案 –
@NicolasPaz,請嘗試在第一個查詢中分配「@idExamen」,以便它更緊湊..請參閱我的文章更新 –