Appel de procédures stockées dans Laravel 5.5 à l'aide de SQL Server avec sortie

J'ai la procédure stockée suivante:

declare @CodigoRet int exec Generator 'LancaContaContabil', @Codigo = @CodigoRet output Select @CodigoRet 
  • OBS: le LancaContaContabil est ma table et le Codigo est le PK pour cette table

Et j'essaye d'appeler cette procédure dans Laravel 5.5 mais cela me donne l'erreur: "Le résultat actif pour la requête ne contient aucun champs":

 $results = DB::select(DB::raw('DECLARE @CodigoRet INT; execute Generator \'LancaContaContabil\', @Codigo = @CodigoRet OUTPUT;')); echo $results; die; 

Même erreur en utilisant la variante sans dbraw:

 $results = DB::select('DECLARE @CodigoRet INT; EXEC Generator \'LancaContaContabil\', @Codigo = @CodigoRet OUTPUT;'); echo $results; die; 

Également essayé avec déclaration, mais le return est toujours 1:

 $results = DB::statement('DECLARE @CodigoRet INT; EXEC Generator \'LancaContaContabil\', @Codigo = @CodigoRet OUTPUT;'); echo $results; die; 

EDIT: J'ai créé la procédure sous le nom 'testeproc' et maintenant j'ai essayé ceci, avec la même erreur que ci-dessus:

 $results = DB::select('EXECUTE testeproc'); echo $results; die; 

Qu'est-ce que je fais mal?

essaye ça:

Sans paramètre:

 $results = DB::select('EXEC your_stored_procedure'); 

Paramètres de Wit

 $results = DB::select('exec your_stored_procedure("parameter1", "parameter2",..)'); 

ou

 $results = DB::select('exec your_stored_procedure(?,?,..)',array($parameter1,$parameter2)); 

Je l'ai juste réglé. Je postrai ici la solution qui peut aider d'autres personnes avec le même problème.

 $dbh = DB::connection()->getPdo(); $sth = $dbh->prepare("SET NOCOUNT ON; EXEC ProcLancaContaContabil"); $sth->execute(); $codigo = $sth->fetchAll(PDO::FETCH_COLUMN, 0); 

L'astuce consiste à utiliser "SET NOCOUNT ON" avant d'appeler la procédure. J'ai trouvé ça ici