C# SQL Server - Passage d'une liste à une procédure stockée

Je suis de l'appel d'une procédure stockée SQL Server à partir de mon code C#:

using (SqlConnection conn = new SqlConnection(connstring))
{
   conn.Open();
   using (SqlCommand cmd = new SqlCommand("InsertQuerySPROC", conn))
   {
      cmd.CommandType = CommandType.StoredProcedure;

      var STableParameter = cmd.Parameters.AddWithValue("@QueryTable", QueryTable);
      var NDistanceParameter = cmd.Parameters.AddWithValue("@NDistanceThreshold", NDistanceThreshold);
      var RDistanceParameter = cmd.Parameters.AddWithValue(@"RDistanceThreshold", RDistanceThreshold);

      STableParameter .SqlDbType = SqlDbType.Structured;
      NDistanceParameter.SqlDbType = SqlDbType.Int;
      RDistanceParameter.SqlDbType = SqlDbType.Int;

      //Execute the query
      SqlDataReader QueryReader = cmd.ExecuteReader();

De ma procédure stockée est assez standard, mais ne une jointure avec QueryTable (d'où la nécessité pour les pour les à l'aide d'une procédure stockée).

Maintenant: je veux ajouter une liste de chaînes de caractères, List<string>, pour le jeu de paramètres. Par exemple, ma procédure stockée requête qui va comme ceci:

SELECT feature 
FROM table1 t1 
INNER JOIN @QueryTable t2 ON t1.fid = t2.fid 
WHERE title IN <LIST_OF_STRINGS_GOES_HERE>

Toutefois, la liste des chaînes est dynamique et à une centaine de long.

Est-il un moyen pour passer d'une liste de chaînes de List<string> à la procédure stockée??? Ou est-il une meilleure façon de le faire?

Merci beaucoup,
Brett

  • Éventuellement, double de stackoverflow.com/questions/209686/...
  • Ce version de SQL Server?? 2005?? 2008 ?? 2008 R2 ?? SQL Server 2008 et plus récent a le concept de "table des paramètres" (voir Redth la réponse pour plus de détails)
  • Sans rapport avec astuce: le SqlDataReader est également IDisposable devrait donc être dans un using bloc.
InformationsquelleAutor Brett | 2011-08-17