Pracuję nad aplikacją ASP.NET i przekazuję wartość łańcuchową, taką jak "1,2,3,4", do procedury wyboru tych wartości, które są IN (1,2, 3,4), ale jego powiedzenie "Konwersja nie powiodła się podczas konwersji wartości varchar" 1,2,3,4 "do typu danych int."SQL korzysta z wartości rozdzielanych przecinkami z klauzulą IN
Oto kod aspx:
private void fillRoles()
{
/*Read in User Profile Data from database */
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetStoredProcCommand("sp_getUserRoles");
db.AddInParameter(cmd, "@pGroupIDs", System.Data.DbType.String);
db.SetParameterValue(cmd, "@pGroupIDs", "1,2,3,4");
IDataReader reader = db.ExecuteReader(cmd);
DropDownListRole.DataTextField = "Group";
DropDownListRole.DataValueField = "ID";
while (reader.Read())
{
DropDownListRole.Items.Add((new ListItem(reader[1].ToString(), reader[0].ToString())));
}
reader.Close();
}
Oto moja procedura:
CREATE Procedure [dbo].[sp_getUserRoles](@pGroupIDs varchar(50))
AS BEGIN
SELECT * FROM CheckList_Groups Where id in (@pGroupIDs)
END
Fantastyczneoooooooooo :) :) Drahcir działało jak urok – user342944
Nie sądzę, że to rozwiązanie zachowa się dobrze na dużych zestawach danych, ponieważ w tym przypadku nie można używać indeksów. (Indeksy nie mogą być używane, gdy przedrostek argumentu wyszukiwania podobnego wyrażenia jest wieloznaczny). –