PHP Obter valor de retorno do MSSQL Stored Procedure
Não consigo obter o parâmetro OUTPUT do meu SQL Server (MSSQL 2012) SP para retornar ao PHP. Meu procedimento armazenado é:
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
E meu código PHP é: -
<?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 conhecer o SP está sendo chamado e funcionando - verifiquei com um rastreio e posso ver que está gerando o seguinte: -
declare @p1 varchar(max)
set @p1='154'
exec dbo.spGetNextSeqID @p1 output
select @p1
Cada vez que atualizo minha página do navegador, ele chama o SP e incrementa o contador em 1, mas nunca retorna o valor para a função PHP de chamada. Estou brincando com isso há cerca de 2 dias - vasculhei as postagens semelhantes, mas nenhuma das correções sugeridas (como SET NOCOUNT ON etc) funciona.
Alguém tem alguma idéia?