我将表名称用作参数化查询,出错。代码如下:
public System.Data.DataTable GetContextByBH()
{
string sSql = "SELECT * FROM :p_BHBNAME";
OracleParameter p1 = new OracleParameter("p_BHBNAME",OracleType.VarChar,20);
p1.Value = "BHFYLB";
OracleConnection con = new OracleConnection(FundsManage.Common.FundsManageConfiguration.ConnectionString);
con.Open();
OracleCommand cmd = new OracleCommand(sSql,con);
cmd.Parameters.Add(p1);
OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
//fill the DataSet using default values for DataTable names, etc.
da.Fill(ds);
return ds.Tables[0];
}
System.Data.OracleClient.OracleException: ORA-00903: 无效表名
请问是不是不能够在参数化Sql语句中把表名作为参数?还是有什么其他解决方法?
public System.Data.DataTable GetContextByBH()
{
string sSql = "SELECT * FROM :p_BHBNAME";
OracleParameter p1 = new OracleParameter("p_BHBNAME",OracleType.VarChar,20);
p1.Value = "BHFYLB";
OracleConnection con = new OracleConnection(FundsManage.Common.FundsManageConfiguration.ConnectionString);
con.Open();
OracleCommand cmd = new OracleCommand(sSql,con);
cmd.Parameters.Add(p1);
OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
//fill the DataSet using default values for DataTable names, etc.
da.Fill(ds);
return ds.Tables[0];
}
System.Data.OracleClient.OracleException: ORA-00903: 无效表名
请问是不是不能够在参数化Sql语句中把表名作为参数?还是有什么其他解决方法?
第二,表名不能参数化。楼主,想别的办法吧。比如:
string tableName;
string sSql = "SELECT * FROM " + tableName;
tableName = "BHFYLB";