PHP Ruft den Rückgabewert von der gespeicherten MSSQL-Prozedur ab

Ich kann den Parameter OUTPUT nicht von meinem SQL Server (MSSQL 2012) SP abrufen, um zu PHP zurückzukehren. Meine gespeicherte Prozedur ist:

CREATE PROCEDURE spGetNextSeqID @ID AS INT OUTPUT
AS
BEGIN
    BEGIN TRANSACTION
    SELECT @ID = SEQUENCE_NO + 1 FROM tblCSRSequence WITH (TABLOCKX)
    UPDATE tblCSRSequence SET SEQUENCE_NO=@ID
    COMMIT TRANSACTION
END

Und mein PHP-Code ist: -

<?php
include "DBConnect.php";
$conn = sqlsrv_connect( $serverName, $connection);
if( !$conn )
{
     echo "Connection could not be established to ".$serverName;
     die( print_r( sqlsrv_errors(), true));
}
$sql="{call dbo.spGetNextSeqID( ? )}";
$outSeq=0;
$params = array
    (
        array($outSeq, SQLSRV_PARAM_OUT)
    );

$stmt = sqlsrv_query( $conn, $sql, $params );

if( $stmt == false)
    die( print_r( sqlsrv_errors(), true) );

sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn );
echo $outseq;
?>

I kennt Der SP wird aufgerufen und funktioniert. Ich habe ihn mit einem Trace überprüft und festgestellt, dass er Folgendes generiert:

declare @p1 varchar(max)
set @p1='154'
exec dbo.spGetNextSeqID @p1 output
select @p1

Jedes Mal, wenn ich meine Browserseite aktualisiere, ruft sie den SP auf und erhöht den Zähler um 1, gibt jedoch nie den Wert an die aufrufende PHP-Funktion zurück. Ich habe jetzt ungefähr 2 Tage damit herumgespielt - ich habe die ähnlichen Beiträge durchsucht, aber keine der vorgeschlagenen Korrekturen (wie SET NOCOUNT ON usw.) funktioniert.

Hat jemand irgendwelche Ideen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage