Sto sviluppando un'applicazione ASP.NET e passando un valore di stringa come "1,2,3,4" in una procedura per selezionare quei valori che sono IN (1,2, 3,4) ma dicendo "Conversione fallita durante la conversione del valore varchar '1,2,3,4' nel tipo di dati int".SQL utilizza valori separati da virgola con la clausola IN
ecco il codice 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();
}
Ecco la mia procedura:
CREATE Procedure [dbo].[sp_getUserRoles](@pGroupIDs varchar(50))
AS BEGIN
SELECT * FROM CheckList_Groups Where id in (@pGroupIDs)
END
Fantasticoooooooooo :) :) Drahcir ha funzionato come un fascino – user342944
Non penso che questa soluzione si comportano bene su dataset di grandi dimensioni, poiché in questo caso non è possibile utilizzare indici. (Gli indici non possono essere utilizzati quando si prefigura l'argomento di ricerca di un'espressione di tipo con un carattere jolly). –