Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
47
Добавлен:
17.04.2018
Размер:
124.42 Кб
Скачать

2. Встроенные функции sql

Функция принимает некоторые данные и возвращает их в преобразованном виде, в зависимости от того, для какой цели она разрабатывалась. В частности, функции могут изменять внешнее представление данных (например, переводить дату в соответствующий день недели), выполнять их статистическую обработку или изменять содержание (например, преобразовывать один набор кодов в другой).

Все представленные в этой теме функции разбиты на две категории: однострочные и агрегатные. Однострочные функции выполняют операции, которые могут повлиять на каждую строку таблицы. В отличие от них агрегатные функции предназначены для получения информации о некоторых подмножествах данных, выбранных определенным образом.

2.1. Однострочные функции

Однострочные функции позволяют управлять вводом и представлением данных на построчной основе и делятся на следующие группы:

• Системные переменные

• Числовые функции

• Символьные (текстовые) функции

• Функции для работы с датами

• Функции преобразования данных

• Прочие функции

Системные переменные

Системные переменные создаются Oracle и содержат информацию о среде, в которой функционирует база данных. Три системные переменные, описанные здесь, позволяют определять системные дату и время, идентификатор пользователя, выполняющего SQL-оператор, и имя компьютера, с которого пользователь вводит команды. Эти переменные могут быть очень полезны в самых разнообразных ситуациях.

SYSDATE

Функция SYSDATE возвращает текущие дату и время. Если говорить точнее, она возвращает дату и время, которые являются текущими с точки зрения сервера Oracle, поэтому если сервер окажется в другом часовом поясе, то возвращаемая информация будет относиться именно к этому поясу. Чтобы увидеть, как работает эта функция, введите следующую команду:

SELECT SYSDATE FROM DUAL;

В ответ на экране будет показана текущая дата. Однако интереснее использовать эту команду в операторах DML. Например, указав SYSDATE в операторе INSERT, можно вставить текущую дату в любое поле данных:

INSERT INTO purchase VALUES ('Small Widget', 10, sysdate);

С текущей датой можно манипулировать, как с любым другим значением, добавляя и вычитая дни. Например, отняв 7 от текущего значения SYSDATE, вы получите дату, которая была ровно неделю назад. Функция SYSDATE полезна также при просмотре записей с датами, которые определенным образом связаны с сегодняшним днем. Например, чтобы увидеть все продажи за последние 30 дней, можно воспользоваться следующей командой:

SELECT * FROM purchase WHERE purchase_date BETWEEN (SYSDATE-30) AND SYSDATE;

USER

Функция USER и следующей за ней функция USERENV полезны, когда нужно вести аудит действий над таблицей, т.е. следить за тем, кто вставляет, обновляет и удаляет записи.

Функция USER возвращает идентификатор пользователя Oracle, который выдал команду, содержащую эту функцию. Чтобы понять смысл сказанного, следует ввести следующую команду:

SELECT USER FROM DUAL;

В результате увидите свое имя, под которым вошли в систему перед запуском SQL*Plus. На данный момент эта функция представляет лишь теоретический интерес, но она пригодится в дальнейшем, когда потребуется сохранять идентификатор пользователя, вносящего изменения в базу данных.

USERENV

Функция USERENV может возвращать множество разных сведений о вычислительной среде, в которой была выдана содержащая ее команда. Наибольший интерес представляет имя компьютера, на котором работает пользователь.

Увидеть имя своего компьютера можно с помощью следующей команды:

SELECT USERENV('TERMINAL') FROM DUAL;

Эта функция в сочетании с рассмотренной выше функцией USER позволяет определить, кто и с какого компьютера обращался к базе данных. Добавив сюда функцию SYSDATE, получим начало детализированной записи аудита.

Соседние файлы в папке лекции оракл