Какая таблица содержит столбец - PullRequest
0 голосов
/ 04 июня 2018

Существует процедура, которая создает оператор выбора, например,

public void GetLog(DataSet dataSet, string tableName, string userCase){
  OracleCommand cmd = new OracleCommand();
  cmd.Connection = conn;
  tmpSql = @"select * from table1 t1
  join table2 on t1.key=t2.key 
  where 1=1 and "+userCase
  cmd.CommandType = CommandType.Text;
  adapter = new OracleDataAdapter(cmd);
  adapter.SelectCommand = cmd;
  adapter.Fill(dataSet, tableName);
}

, обе таблицы содержат столбец, например, "NAME", а когда userCase похож на "name = 'BLABLA'", у меня есть исключение "или-00918 столбец определен неоднозначно ".Я хочу добавить имя таблицы в userCase.Как я могу получить информацию, какая таблица содержит этот столбец для добавления его в var userCase "table1.name = 'BLABLA'".userCase может содержать любой столбец из table1 или table2.Мне нужно изменить процедуру, чтобы она получала метаданные по sql или по имени таблицы

Ответы [ 2 ]

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

Необходимо изменить sql как

tmpSql = @"select * from (select t1.key as t1_key,t2.key as t2_key, t1.name as t1_name,t2.name  as t2_name..... from table1 t1
  join table2 on t1.key=t2.key )
  where t2_name='...'

, а условие userCase должно основываться на псевдониме

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

Похоже, вы уже передаете tableName в качестве параметра метода.Если это таблица, содержащая столбец из userCase, вы можете написать что-то вроде:

tmpSql = @"select * from table1 t1

присоединиться к tablet2 на t1.key = t2.key, где 1 = 1 и "+ tableName +". "+ UserCase

Если у вас есть столбцы с одним и тем же именем в нескольких таблицах, то у компьютера не будет возможности узнать, какой из них вы имеете в виду, если только вы не укажете его (либо передав его как часть userCase, либо объедините его, как показано выше)Если столбец в одной таблице, вам не о чем беспокоиться.

С уважением,

...