Имеется таблица 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-ХХХ-ХХХХ-ХХХ...
Видеть полную информацию и оставлять заявки могут только авторизованные пользователи.
Заявок нет
Оставлять заявки могут только авторизованные пользователи.
Задачка по Oracle SQL
Реклама
Задачка по 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-ХХХ-ХХХХ-ХХХ...