Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Получить метаданные таблиц по запросу Oracle  [new]
dMazay82
Member

Откуда: Тверь
Сообщений: 339
Всем привет
Есть примерно такая процедура, запрос не обязательно такой, но суть отображает

public void GetLog(DataSet dataSet, 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='блаблабла' возникает эксепшен "ora-00918 column ambiguously defined" условие должно быть table1.name='блаблабла'. На вход может придти любое поле из таблиц, не обязательно то которое есть в обеих.

Можно ли как то получить мета данные по запросу, чтобы определить какой столбец, какой таблице принадлежит?
Если по запросу нельзя, можно как вариант по отдельным таблицам?
5 июн 18, 17:13    [21470597]     Ответить | Цитировать Сообщить модератору
 Re: Получить метаданные таблиц по запросу Oracle  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20468
Опять за рыбу деньги.

Забыть конструкцию "SELECT *" как страшный сон!
5 июн 18, 17:16    [21470606]     Ответить | Цитировать Сообщить модератору
 Re: Получить метаданные таблиц по запросу Oracle  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20468
https://www.sql.ru/forum/1294583/poluchenie-imen-poley-iz-zaprosa?hl=select
5 июн 18, 17:18    [21470613]     Ответить | Цитировать Сообщить модератору
 Re: Получить метаданные таблиц по запросу Oracle  [new]
dMazay82
Member

Откуда: Тверь
Сообщений: 339
Shocker.Pro
Опять за рыбу деньги.
Забыть конструкцию "SELECT *" как страшный сон!

Почему, может быть имелось в виду "SELECT *", то да согласен

Shocker.Pro
https://www.sql.ru/forum/1294583/poluchenie-imen-poley-iz-zaprosa?hl=select

особо тоже, но на мысль навело

select * from (
  select t.name, t1.f1, t2.f2, t2.f3... from table1 t1
    join table2 on t1.key=t2.key 
  ) where name='блаблабла' 
6 июн 18, 09:36    [21471699]     Ответить | Цитировать Сообщить модератору
 Re: Получить метаданные таблиц по запросу Oracle  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20468
У тебя проблема не тут. Не должно
dMazay82
на вход в userCase приходит что-то типа name=
где name ambiguously.

А приходит из-за того, что используется select * вместо нормального перечня полей с псевдонимами
6 июн 18, 09:42    [21471717]     Ответить | Цитировать Сообщить модератору
 Re: Получить метаданные таблиц по запросу Oracle  [new]
dMazay82
Member

Откуда: Тверь
Сообщений: 339
Shocker.Pro,
все норм, может слишком общий вопрос сформулировал...
Да скорее всего надо поменять способ формирования sql, он полуавтоматический, и дописывать алиасы.
В общем мысль понятна, спасибо.
6 июн 18, 09:53    [21471747]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить