我的代码看起来如下:
String Tablei= "PHGR_PHYS_GRAPH";
OracleCommand cmd_row = new OracleCommand();
OracleDataReader dr1;
cmd_row.CommandText = "SELECT PHGR_ID FROM " +":tableconf";
cmd_row.Connection = conn;
cmd_row.Parameters.Add(new OracleParameter("tableconf", Tablei));
dr1 = cmd_row.ExecuteReader();我得到了错误或00903无效的表名。
但是,当我像这样更改查询时(没有参数):
cmd_row.CommandText = "SELECT PHGR_ID FROM PHGR_PHYS_GRAPH";很管用。谁能指出我的错误是什么?
发布于 2018-06-13 07:42:13
您不能为此目的使用OracleParameter。您只可以将其用于参数值。例如:
OracleCommand cmd_row = new OracleCommand();
cmd_row.CommandText = "SELECT PHGR_ID FROM PHGR_PHYS_GRAPH WHERE phgr_id=:phgr_id";
cmd_row.Connection = conn;
cmd_row.Parameters.Add(new OracleParameter("phgr_id", "some_value"));如果您想要有一个可变表名,您应该使用String.Format()或更简洁的$
String Tablei= "PHGR_PHYS_GRAPH";
OracleCommand cmd_row = new OracleCommand();
cmd_row.CommandText = $"SELECT PHGR_ID FROM {Tablei} WHERE phgr_id=:phgr_id";
cmd_row.Connection = conn;
cmd_row.Parameters.Add(new OracleParameter("phgr_id", "some_value"));顺便说一句:我强烈建议用块来包装代码。
https://stackoverflow.com/questions/50830965
复制相似问题