2016-04-20 1 views
0

J'ai une procédure stockée dans SQL Server qui fonctionne avec un paramètre qui doit être une liste de 2 clés, comme:Liste en tant que paramètre dans SQL

 
key1 key2 
1  7 
2  8 
3  9 
1  5 
3  8 

Je ne peux pas utiliser un type de paramètre d'une valeur de table. Comment puis-je définir un type de paramètre qui s'occupe de cette situation? Obs .: J'ai déjà essayé d'utiliser un type de paramètre varchar (max) pour chaque champ, en utilisant des virgules pour séparer les valeurs et l'analyse XML dans SQL, mais cela implique 2 tables avec 1 colonne chacune, et pourrait ne pas trouver un moyen de simplement mettre ces colonnes côte à côte dans 1 table.

+2

'Je ne peux pas utiliser un paramètre de valeur table type.' - pourquoi? – Igor

+0

J'utilise Entity Framework pour importer la procédure et le TVP n'est pas supporté. – rafaelrcdev

+0

Que courez-vous lorsque vous l'avez essayé? Je l'ai googlé et j'ai trouvé un lien qui ressemble à ce qui serait compatible avec un SP et un TVP. https://code.msdn.microsoft.com/Stored-Procedure-with-6c194514 – Igor

Répondre

0

vous pouvez le faire avec le type XML si vous savez comment former votre XML et récupérer les données

DECLARE @xml XML 
SET @xml = '<root> 
       <key> 
        <key1>1</key1> 
        <key2>7</key2> 
       </key> 
       <key> 
        <key1>2</key1> 
        <key2>8</key2> 
       </key> 
       <key> 
        <key1>3</key1> 
        <key2>9</key2> 
       </key> 
       <key> 
        <key1>1</key1> 
        <key2>5</key2> 
       </key> 
       <key> 
        <key1>3</key1> 
        <key2>8</key2> 
       </key> 
      </root>' 

SELECT p.value('(./key1)[1]', 'int') AS key1, 
     p.value('(./key2)[1]', 'int') AS key2 
FROM @XML.nodes('/root/key') T(p) 


key1  key2 
----------- ----------- 
1   7 
2   8 
3   9 
1   5 
3   8 
+0

Cela m'a beaucoup aidé. Je ne fournis pas le XML du côté de l'application, mais en utilisant un seul paramètre, je pourrais générer un XML correct et obtenir le résultat attendu. Je vous remercie. – rafaelrcdev