Параметр SQL OracleCommand не работает - PullRequest
0 голосов
/ 13 июня 2018

Мой код выглядит следующим образом:

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();

и я получаю ошибку ORA-00903 неверное имя таблицы.

Однако, когда я изменяю запрос следующим образом (без параметра):

cmd_row.CommandText = "SELECT PHGR_ID FROM PHGR_PHYS_GRAPH";

работает.Кто-нибудь может указать мне, в чем моя ошибка?

1 Ответ

0 голосов
/ 13 июня 2018

Вы не можете использовать 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"));

Кстати: я настоятельно рекомендую обернутьваш код в использовании блоков

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...