Estoy desarrollando una aplicación ASP.NET y pasando un valor de cadena como "1,2,3,4" en un procedimiento para seleccionar los valores que están IN (1,2, 3,4) pero dice "La conversión falló al convertir el valor varchar '1,2,3,4' al tipo de datos int".SQL usa valores separados por comas con la cláusula IN
Este es el código 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();
}
Aquí es mi procedimiento:
CREATE Procedure [dbo].[sp_getUserRoles](@pGroupIDs varchar(50))
AS BEGIN
SELECT * FROM CheckList_Groups Where id in (@pGroupIDs)
END
Fantasticoooooooooo :) :) Drahcir funcionó como encanto – user342944
No creo que esta solución se comportará bien en grandes conjuntos de datos, ya que no se pueden usar índices en este caso. (Los índices no se pueden usar cuando se prefija el argumento de búsqueda de una expresión similar con un comodín). –