2017-09-21 2 views
0

J'écris un proc stocké pour retourner les résultats au format JSON. Je veux ajouter un paramètre d'entrée pour activer éventuellement INCLUDE_NULL_VALUES en utilisant une expression CASE mais je ne peux pas le faire fonctionner. @includeNullValues ​​est le paramètre d'entrée par défaut à 0. Quelqu'un peut-il aider ici?En utilisant FOR JSON PATH, puis-je rendre INCLUDE_NULL_VALUES facultatif?

SELECT..... 

FROM   #matterdetail md 
ORDER BY CASE 
    WHEN @includeNullValues = 1 THEN 
      md.FileNumber 
      FOR JSON PATH, INCLUDE_NULL_VALUES 
    ELSE 
     md.FileNumber 
     FOR JSON PATH 
END 

Répondre

0

Vous pouvez toujours vérifier la syntaxe de la clause dans le MSDN. Dans ce case nous avons:

enter image description here

Vous pouvez voir comment read la syntaxe here. Vous n'êtes donc pas autorisé à utiliser ni variables ni expressions.

Vous avez les options suivantes:

  • contrôle le flux en utilisant IF ELSE
  • build instruction T-SQL dynamique et l'exécuter
+0

Merci, a été liquidée en utilisant IF/ELSE autour de la totalité des l'instruction de sélection finale dans le proc, je ne pouvais pas trouver un moyen de modifier uniquement la clause order by. Ce n'est pas beau, mais ça marche. –