语句如下:
public void DeleteSubjectByKm_id(string str_IDS)
{
SqlParameter patrameter = new SqlParameter("@km_ids", SqlDbType.VarChar,50);
patrameter.Value = str_IDS;
using (SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectString"]))
{
try
{
conn.Open();
string str_sql = @"delete from edm_t_dm_subject where cast(km_id as varchar(50)) in (@km_ids) ";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = str_sql;
cmd.Parameters.Add(patrameter);
cmd.ExecuteNonQuery();
conn.Close();
}
catch (Exception ex)
{
}
}
}
public void DeleteSubjectByKm_id(string str_IDS)
{
SqlParameter patrameter = new SqlParameter("@km_ids", SqlDbType.VarChar,50);
patrameter.Value = str_IDS;
using (SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectString"]))
{
try
{
conn.Open();
string str_sql = @"delete from edm_t_dm_subject where cast(km_id as varchar(50)) in (@km_ids) ";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = str_sql;
cmd.Parameters.Add(patrameter);
cmd.ExecuteNonQuery();
conn.Close();
}
catch (Exception ex)
{
}
}
}
catch (Exception ex)
{
msgbox(ex.message)
}
先看看有没有报错
建议用JOIN及子查询来做
好像用带参数的话,in里面的参数识别不了。
where cast(km_id as varchar(50)) in (@km_ids)
---------
这种写法是错误的...这里不能用参数传...要么拼字符串要么用一个SP接收此参数再用exec执行...
估计你这个条件查出来是空的
set @km_ids = '6525,6535,6529'
select * from edm_t_dm_subject where cast(km_id as varchar(50)) in (@km_ids)
是空的?
这是怎么回事,我对这个技术点不太清楚,为什么不行?
为什么要转换成字符串啊。select * from edm_t_dm_subject where km_id in (@km_ids)
set @km_ids = ‘'6525','6535',6529'’ 要用这种方式 隔起来的 你看看帮助 in的用法
@km_ids这个参数如何表示 1,2,3 ? 传 '1,2,3'进去明显是错误的select * from edm_t_dm_subject where km_id in (@km_ids1,@km_ids2,@km_ids3)
@km_ids1 传1
@km_ids2 传2
@km_ids3 传3
正确楼主想要实现功能,还需另寻它法。
set @km_ids = '6525,6535,6529'
exec "select * from edm_t_dm_subject where cast(km_id as varchar(50)) in ("+@km_ids+")"要这样才行...语法问题...
其中,km_ids="'a','b','c'";