Tôi đang phát triển một ứng dụng ASP.NET và chuyển một giá trị chuỗi như "1,2,3,4" vào một quy trình để chọn các giá trị đó là IN (1,2, 3,4) nhưng nói rằng "Chuyển đổi không thành công khi chuyển đổi giá trị varchar '1,2,3,4' thành kiểu dữ liệu int."SQL sử dụng giá trị được phân cách bằng dấu phẩy với mệnh đề IN
Đây là mã 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();
}
Dưới đây là thủ tục của tôi:
CREATE Procedure [dbo].[sp_getUserRoles](@pGroupIDs varchar(50))
AS BEGIN
SELECT * FROM CheckList_Groups Where id in (@pGroupIDs)
END
Fantasticoooooooooo :) :) Drahcir nó hoạt động như nét duyên dáng – user342944
Tôi không nghĩ rằng giải pháp này sẽ hoạt động tốt trên các tập dữ liệu lớn, vì không có chỉ mục nào có thể được sử dụng trong trường hợp này. (Không thể sử dụng các chỉ mục khi bạn thêm tiền tố đối số tìm kiếm của một biểu thức tương tự với ký tự đại diện). –