Andres Fonseca
Andres Fonseca

Reputation: 25

OracleCommand SQL Parameter not working

My code looks likes this:

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

and i get error ORA-00903 invalid table name.

However when i change the query like this(without parameter):

cmd_row.CommandText = "SELECT PHGR_ID FROM PHGR_PHYS_GRAPH";

works. Can anyone point me out what is my mistake?

Upvotes: 1

Views: 1079

Answers (1)

Hintham
Hintham

Reputation: 1086

You can't use OracleParameter for this purpose. You can use this for parameter values only. For example:

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

If you want to have a variable table name you should use String.Format() or the more concise $

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

BTW: I strongly recommend to wrap your code in using blocks

Upvotes: 2

Related Questions