151 votes

Comment obtenir sp_executesql résultat dans une variable?

<p>J’ai un morceau de j’ai besoin d’exécuter des instructions SQL dynamiques, j’ai alors besoin de stocker le résultat dans une variable.<p>Je sais que je peux utiliser <code></code> mais je ne trouve autour des exemples clairs à ce sujet.</p></p>

217voto

Eduardo Molteni Points 23135
<p>Si vous avez des paramètres de sortie, que vous pouvez faire<pre><code></code></pre><p>Mais si vous n’et ne pouvez pas modifier le SP :</p><pre><code></code></pre><p>Pas joli, mais fonctionne.</p></p>

36voto

Nishanth Points 119
DECLARE @tab AS TABLE (col VARCHAR(10), colu2 varchar(10)) 
  INSERT into @tab EXECUTE  sp_executesql N'SELECT 1 as col1, 2 as col2 union all SELECT 1 as col1, 2 as col2 union all SELECT 1 as col1, 2 as col2'

  SELECT * FROM @tab

31voto

Buchaiah Points 59
DECLARE @vi INT
DECLARE @vQuery VARCHAR(1000)

SET @vQuery = 'SELECT @vi= COUNT(*) FROM <TableName>'

EXEC SP_EXECUTESQL 
        @Query  = @vQuery
      , @Params = N'@viINT OUTPUT'
      , @vi = @viOUTPUT

SELECT @vi

3voto

Mark Hedley Points 47
<p>DECLARE @variable int</p> <p>Exec @variable = nom_proc</p>

1voto

Gizmo Points 489
<p>Valeurs de retour ne sont généralement pas utilisés pour « retourner » un résultat mais pour retourner à succès (0) ou un numéro d’erreur (1-65K). Ce qui précède, que tout semble indiquer que sp_executesql ne retourne pas une valeur, ce qui n’est pas correcte. sp_executesql retourne 0 pour réussir et tout autre numéro d’échec.<p>Dans le bas, @i retournera 2727</p><pre><code></code></pre><p>SSMS affiche ce Msg 2727, niveau 11, état 1, ligne 1 ne peut pas rechercher les index « NonExistantStaticsName ».</p></p>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: