Comments 9
А если функция должна возвращать разные результаты, даже при разных параметрах, то все будет печально?
Подзапросы такого вида (скалярные подзапросы):
SELECT (SELECT get_colour(fruit_name) FROM dual)
FROM fruits;
Кэшируются базой для более быстрого доступа и поэтому не происходит дополнительных вызовов.
В первом случае seq = 16 во во втором 4.
Не знаю есть ли это в документации (не обращал внимания) просто помню с тренинга.
SELECT (SELECT get_colour(fruit_name) FROM dual)
FROM fruits;
Кэшируются базой для более быстрого доступа и поэтому не происходит дополнительных вызовов.
В первом случае seq = 16 во во втором 4.
Не знаю есть ли это в документации (не обращал внимания) просто помню с тренинга.
Вообще вроде вполне известный факт. Кстати, вместо nextval можно было использовать seq.currval, и еще на эту тему вам возможно было бы интересно:
1. RESULT_CACHE clause,RELIES_ON в 11g
2. Inline функций в pl/sql в 11g
3. Рестарты(но тут это дикое кол-во информации)
1. RESULT_CACHE clause,RELIES_ON в 11g
2. Inline функций в pl/sql в 11g
3. Рестарты(но тут это дикое кол-во информации)
Оракл состоит из «интересных неочевидных особенностей» чуть более, чем наполовину :)
Для полноты картины надо добавить, что объявление функций детерминированными или недетерминированными (и, соответственно, кеширование результатов первых) есть и в других базах. Оптимизатор MySQL с версии 5.1 или даже раньше уже умеет включать кеширование детерминированных функций.
Для полноты картины надо добавить, что объявление функций детерминированными или недетерминированными (и, соответственно, кеширование результатов первых) есть и в других базах. Оптимизатор MySQL с версии 5.1 или даже раньше уже умеет включать кеширование детерминированных функций.
Аналогичная особенность есть в PostgreSQL — три типа детерминированности функции: IMMUTABLE, STABLE и VOLATILE.
Подробнее тут: www.postgresql.org/docs/9.0/static/xfunc-volatility.html
Кстати, поищите в документации по Ораклу — может там тоже третий тип найдется? :)
Подробнее тут: www.postgresql.org/docs/9.0/static/xfunc-volatility.html
Кстати, поищите в документации по Ораклу — может там тоже третий тип найдется? :)
Sign up to leave a comment.
Интересная особенность Oracle SQL