ODP.NETにおいてバインド変数でテーブル名をパラメータとして指定できるか?
//SQL文:テーブル名をバインド変数に
var str = "select * from :tablename";
//oracleコマンドにSQL渡してインスタンス生成
var cmd = new OracleCommand(str);
//パラメーターをバインド
cmd.Parameters.Add(":tablename", "HOGE_TABLE");
上記のようにテーブル名をバインド変数にして、
後からパラメータをバインドしようと考えました。
しかし、これ駄目でした。
結論
色々と試行&調査した結果、
テーブル名をパラメータで指定することは不可能という結論に達しました。
テーブル名が不明だと、
問い合わせに対する実行計画を立てられないためNGだそうです。
SQLServerなどもoracleと同様、パラメータでテーブル名を置き換えできません。
でも条件によってテーブル名を動的に切り替えたい
パラメータを使わず文字列連結でSQLを作るしかないようです。
//テーブル名1
var tableName = "HOGE_TABLE";
//条件によってはテーブル名2を使用
if (条件) tableName = "FUGA_TABLE";
//SQL
var str = "select * from "+ tableName;
ディスカッション
コメント一覧
まだ、コメントがありません