CURRENT в Oracle SQL. Введение
CURRENT — это часть нескольких ключевых конструкций в Oracle SQL и PL/SQL, которые возвращают текущие значения: времени, даты, временных зон или строки курсора. Само по себе CURRENT — это не самостоятельный оператор, а префикс в составе таких выражений как:
CURRENT_DATECURRENT_TIMESTAMPCURRENT_USERCURRENT OF(для работы с курсорами)
Эти конструкции позволяют удобно работать с контекстной информацией и делают код более адаптивным и читаемым.
🔤 Написание
Наиболее часто используемые формы:
Для курсоров:
🔄 Где используется
Для получения текущей даты и времени (учитывая сеансовую зону)
В аудит-триггерах, логах, PL/SQL-скриптах
Для работы с текущим пользователем (аутентификация, аудит)
В
WHERE CURRENT OF— безопасное обновление строки, извлечённой курсором
🧪 10 Примеров использования CURRENT
1️⃣ Текущая дата
Возвращает дату в текущей сессионной временной зоне.
2️⃣ Текущее время с точностью до микросекунд
3️⃣ Текущий пользователь
Имя пользователя, под которым выполняется SQL-запрос.
4️⃣ Сравнение CURRENT_DATE с SYSDATE
Отличие: CURRENT_DATE зависит от сессионной временной зоны, а SYSDATE — от сервера.
5️⃣ Получение текущей временной зоны
6️⃣ CURRENT OF с курсором
Обновляет только текущую строку из курсора.
7️⃣ Логирование с CURRENT_TIMESTAMP
8️⃣ Триггер с CURRENT_USER
9️⃣ Разница между SYSTIMESTAMP и CURRENT_TIMESTAMP
SYSTIMESTAMP — время на сервере, CURRENT_TIMESTAMP — в сессии пользователя.
🔟 С CURRENT_DATE в условиях
🧩 Заключение
Хотя CURRENT — не самостоятельный оператор, он лежит в основе мощных и часто используемых конструкций Oracle SQL. Его применение особенно актуально в:
Отчётности по текущей дате и пользователю
PL/SQL-программах с курсорами
Логировании и аудите
💡 Запомни:
CURRENT_DATE,CURRENT_TIMESTAMP— сессионные значенияCURRENT OFнужен для обновления строки из курсораCURRENT_USERполезен в многопользовательских сценариях