各位园友大家好,有个问题请教下:
举例:执行带参数SQL语句时如下:
1 string sql = "select * from OrgDept where id=@id"; 2 SqlParameter[] paras = new SqlParameter[] { 3 new SqlParameter("@id","1") 4 }; 5 DataTable dt = new DataTable(); 6 SQLHelper sqlHelper = new SQLHelper(); 7 dt = sqlHelper.ExecuteQuery(sql,paras,CommandType.Text);
现在我需要根据情况选择不同的表,改成下面:
1 string sql = "select * from @OrgDept"; 2 SqlParameter[] paras = new SqlParameter[] { 3 new SqlParameter("@OrgDept","OrgDept") 4 };
执行时会报错:必须声明表变量 "@OrgDept"
问题:
参数不可以替换表名吗?
我晕,根据不同的情况给sql不同的值不行了。为何把表也当成参数。
string sql = String.Format("select * from {0}","OrgDept");
没这样写过。不过换个方法解决可以:
表名是不行的哦
如果要把表名当参数的话 就不能直接执行sql语句了
declare @str nvarchar(max)
set @str='select * from '+@OrgDept
exec (@str) 这样写
直接拼起来么,想复杂了吧
你直接拼接不就行了,还搞这么麻烦的事情