Задачка по Oracle SQL

Задание закрыто
Стоимость:2 000 рублей
Срок выполнения:3 дня
Варианты оплаты:Без предоплаты
Дата публикации:2019-05-03 15:48
Обновлено:2019-05-03 15:52
Был на сайте:2024-10-07 23:49

Задачка по Oracle SQL

 
Задача

Имеется таблица MyTable в базе данных Oracle, несколько миллионов записей, в таблице два поля:
1. 'id' number, (primary key)
2. 'depozit' varchar2
Изменять структуру таблицы нельзя.

В сторонней системе (не родной для этой базы данных) имеется прослойка, которая генерирует запросы к этой талице, используя в WHERE только тип GUID:
SELECT * FROM MyTable WHERE Id_GUID='00000001-ХХХ-ХХХХ-ХХХХ-ХХХХХХХХХХХ';
SELECT * FROM MyTable WHERE Id_GUID='00000002-ХХХ-ХХХХ-ХХХХ-ХХХХХХХХХХХ';
SELECT * FROM MyTable WHERE Id_GUID='00000003-ХХХ-ХХХХ-ХХХХ-ХХХХХХХХХХХ';
...

Проблема в том, что в системе Id_GUID это длинный текст, а в таблице Id целочисленный. Изменить формат запроса нельзя, можно только поменять имя таблицы на другое, или на VIEW.

Можно сделать VIEW:
CREATE VIEW MyView ( Id_GUID, Depozit ) AS
SELECT
to_char( id, '00000000' ) || '-ХХХ-ХХХХ-ХХХХ-ХХХХХХХХХХХ' AS id_GUID,
depozit AS depozit
FROM MyTable;

Тогда запросы работают:
SELECT * FROM MyView WHERE Id_GUID='00000001-ХХХ-ХХХХ-ХХХ...

Видеть полную информацию и оставлять заявки могут только авторизованные пользователи.
Заявок нет

Оставлять заявки могут только авторизованные пользователи.