Mögliche Duplizieren:
Parameterizing a SQL IN clause?.Net SQL Parameter für Listen Problem
ich ein C# Programm schreibe, in dem ich eine Abfrage an SQL Server senden verarbeitet und einen Datensatz zu kehrt zurück. Ich verwende Parameter, um Informationen an die Abfrage zu übergeben, bevor sie an den SQL-Server gesendet werden. Dies funktioniert gut, außer in der folgenden Situation.
Die Abfrage sieht wie folgt aus:
reportQuery =
"
Select *
From tableName
Where Account_Number in (@AccountNum);
and Account_Date = @AccountDate
";
Der AccountDate Parameter Arbeiten finden aber nicht die AccountNum Parameter.
Ich brauche die letzte Abfrage wie folgt auszuführen:
Select *
From tableName
Where Account_Number in ('AX3456','YZYL123','ZZZ123');
and Account_Date = '1-Jan-2010'
Das Problem ist, dass ich diese Kontonummern (eigentlich Text) in einer C# String-Liste haben. Um es dem Parameter zuzuführen, habe ich den Parameter als String deklariert. Ich drehe die Liste in eine Zeichenfolge und führe sie dem Parameter zu. Ich denke, das Problem ist, dass ich die Paramater bin Fütterung dies:
"'AX3456','YZYL123','ZZZ123'"
wenn sie will diese
'AX3456','YZYL123','ZZZ123'
Wie kann ich die String-Liste in die Abfrage mit einem Parameter erhalten und haben es ausführen, wie gezeigt über?
So deklariere und weise ich den Parameter zu.
SqlParameter AccountNumsParam = new SqlParameter();
AccountNumsParam.ParameterName = "@AccountNums";
AccountNumsParam.SqlDbType = SqlDbType.NVarChar;
AccountNumsParam.Value = AccountNumsString;
FYI, AccountNumString == " 'AX3456', 'YZYL123', 'ZZZ123'"
Welche Version von SQL Server? Wenn 2008 Table Valued Parameters verwendet, wenn nicht [diese Antwort] (http://stackoverflow.com/questions/337704/parameterizing-a-sql-in-clause) für eine Vielzahl von Möglichkeiten oder [Erland Sommarskog - Arrays und Listen in SQL Server] (http://www.sommarskog.se/arrays-in-sql.html) –
Es ist 2008. Ich werde das überprüfen und zurückkommen. Vielen Dank! –
Ich mochte nicht die gewählte Antwort in dem oben genannten "Duplikat". Sonst hätte ich das selbst geschlossen. Jetzt kann ich nicht die Antwort wählen, die ich mag. Die Verwendung von Table Valued Parameters hat sehr gut funktioniert. –