Я пытаюсь интегрироваться с некоторым программным обеспечением (которое я не могу изменить), которое запрашивает базу данных, которую я могу изменить.
Я могу дать этому программному обеспечению SQL-запросы, например, так "выберите имя пользователя, имя, фамилия от пользователей, где имя пользователя в? "
Программное обеспечение, чем заполняет?с чем-то вроде ('Алиса', 'Боб'), и получает информацию о пользователях для них.
Дело в том, что есть еще одна часть программного обеспечения, которую я снова не могу изменить, которая иногда генерирует таких пользователей, как 'user2343290и передает их на первый кусок программного обеспечения.Конечно, он выдает ошибки, потому что не может найти этого пользователя.
Итак, запрос, который я хочу выполнить, выглядит примерно так:
select username, firstname, lastname from users where username in ?
UNION ALL
select t.column1, 'Unknown', 'Unknown' from create_table(?) t
, где create_table генерирует таблицу со строкамиупоминается в?, с первым столбцом с именем column1.
Или в качестве альтернативы:
select username, firstname, lastname from users where username in ?
UNION ALL
select t.column1, 'Unknown', 'Unknown' from _universe_ t where t.column1 in ?
, где _universe_
- это некоторая поддельная таблица, которая содержит все возможные значения в column1 (т.е. бесконечно большие).
Я пробовал выбрать?от двойного, но, к сожалению, это работало только когда?было что-то вроде ('x'), а не ('x', 'y').
Имейте в виду, я не могу изменить формат как?выходит, так что я не могу сделать select 'alice' from dual union all select 'bob' from dual
.
Кто-нибудь знает, как я могу сделать то, что я упомянул, или что-то еще, чтобы получить аналогичный эффект?