J'ai créé une procédure stockée qui prend en paramètre une table de valeurs qui est une table avec une seule colonne de type int
. L'idée est de simplement passer une liste d'identifiants dans la procédure stockée et permettre à la procédure stockée de travailler avec les données. Cependant, dans le cas où il n'y a pas de données à passer, je rencontre des problèmes (les choses fonctionnent correctement quand j'ai des données). Je convertis une List
en un IEnumerable
, et lie cela au paramètre de valeur de table pour la procédure stockée. J'ai essayé de lier une List
vide, ce qui a provoqué l'erreur :
System.ArgumentException: Il n'y a aucun enregistrement dans l'énumération SqlDataRecord. Pour envoyer un paramètre à valeurs de table sans lignes, utilisez une référence nulle à la place.
J'ai ensuite essayé de lier une valeur null (ce que je pensais être le sens du message ci-dessus), mais cela n'a entraîné qu'un message d'erreur différent
System.NotSupportedException: La valeur DBNull pour le paramètre '@MainItemIdList' n'est pas prise en charge. Les paramètres à valeurs de table ne peuvent pas être DBNull.
Il ne semble pas possible de déclarer le paramètre de valeur de table comme nullable dans la déclaration de la procédure stockée. Quelle est la méthode correcte pour lier une liste vide à un paramètre de valeur de table?