Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Посібник Мова SQL кредитно-модульний.doc
Скачиваний:
33
Добавлен:
01.05.2015
Размер:
1.25 Mб
Скачать

2. Функції та інші конструкції мови

Функція інкапсулює логіку, яка часто виконується, у підпрограму, що складається з одного або декількох операторів Transact-SQL. Будь-яка програма, який потрібно виконати алгоритм, реалізований функцією, може не повторювати весь алгоритм, а викликати цю функцію.

SQL Server 2005 підтримує функції двох типів:

  • убудовані функції — їхня робота визначена в Transact-SQL, і її не можна модифікувати. Ці функції дозволяється викликати тільки в операторах Transact-SQL;

  • користувальницькі функції— дозволяють користувачам визначати власні функції Transact-SQL за допомогою оператораCREATE FUNCTION.

Убудовані функції

Мова програмування Transact- SQL містить три типи убудованих функцій: функції одержання набору рядків, агрегатні й скалярні функції.

Функції одержання набору рядків

Функції одержання набору рядків можна застосовувати в операторах подібно посиланням на таблицю. Вони повертають об'єкт, що дозволяється використати в операторі Transact-SQL замість посилання на таблицю. Наприклад, функція OPENQUERYє функцією одержання набору рядків, що виконує транзитний запит на даному зв'язаному сервері, який представляє собою джерело даних OLEDB. У конструкціїFROM на функціюOPENQUERYможна посилатися так само, як на ім'я таблиці.

Всі функції одержання набору рядків є не детермінованими. Тобто при виклику з тим самим набором вхідних параметрів вони можуть повертати різні результати.

Агрегатні функції

Агрегатні функції обробляють набори значень, але повертають єдине підсумкове значення. Прикладом агрегатної функції може служити функція AVG, що повертає середнє значення групи даних.

Припустимо використовувати агрегатні функції як вирази тільки в наступних операторах і конструкціях:

  • списку вибору оператора SELECT (у підзапиті або зовнішньому запиті);

  • COMPUTE або COMPUTE BY;

  • HAVING.

Всі агрегатні функції, за винятком COUNT, ігнорують порожні значення. Агрегатні функції часто застосовуються з конструкцією GROUP BY в операторі SELECT. Всі агрегатні функції є детермінованими, оскільки при виклику з тими самими вхідними значеннями повертають однакові результати.

Скалярні функції

Скалярні функції обробляють одиночне значення і повертають також одне значення. Скалярні функції дозволяється використовувати скрізь, де допускається застосування виразів. Як показано в наступній таблиці, скалярні функції підрозділяються на кілька категорій.

Категорія скалярної функції

Опис

Функції конфігурації

Повертають відомості про поточну конфігурацію

Функції курсору

Повертають відомості про курсори

Функції часу й дати

Виконують різні дії над вхідними значеннями часу й дати й повертають строкове, числове значення або значення у форматі дати й часу

Математичні

Виконують обчислення на основі вхідних значень, наданих як параметри, і повертають числове значення

Функції метаданих

Повертають відомості про базу даних і її об'єктів

Функції безпеки

Повертають інформацію про користувачів і ролі

Строкові функції

Виконують операції над рядками (charабоvarchar) і повертають строкові або числові значення