Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

USE Northwind




Description NVARCHAR(50)

CREATE TABLE Table (

KeyCol INT PRIMARY KEY,

)

Існують два класи ідентифікаторів: звичайні і з обмежниками.

Звичайні ідентифікатори

У звичайних ідентифікаторах обмежники не застосовуються. У наступному операторі SELECT є присутнім два ідентифікатори: Table і KeyCol.

SELECT * FROM Table

WHERE KeyCol = 124

Ідентифікатори з обмежниками

Ідентифікатори з обмежниками включають у подвійні лапки (" "} або квадратні дужки ([ ]). Ідентифікатори, що відповідають правилам форматування ідентифікаторів, бувають як з обмежниками, так і звичайними ідентифікаторами. У наступному операторі SELECT обмежники (квадратні дужки) не обов'язкові:

SELECT * FROM [Table]

WHERE [KeyCol] = 124

В операторах Transact-SQL ідентифікатори, що не повністю відповідають правилам форматування, необхідно записувати між обмежниками. У наступному операторі SELECT ідентифікатор My Table необхідно використати з обмежниками, оскільки він містить пробіл. Ідентифікатор Order також варто використати з обмежниками, оскільки він збігається із зарезервованим ключовим словом.

SELECT * FROM [My Table]

WHERE [Order] = 10

Змінні

Змінна мови Transact-SQL являє собою об'єкт у пакетах Transact-SQL і у сценаріях, який може мати певне значення. Після того як змінна визначена (оголошена), один оператор Transact-SQL з пакету може встановити її значення, а інший - пізніше одержати значення цієї змінної. Наступні оператори Transact- SQL оголошують змінну з ім'ям EmpIDVar, та встановлюють її значення яке дорівнює 3, а потім використовують цю змінну в операторі SELECT:

DECLARE @EmpIDVar INT

SET @EmpIDVar = 3

SELECT * FROM Employees

WHERE EmployeeID = @EmpIDVar + 1

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

· є лічильниками циклів;

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

· використовуються для збереження значення коду повернення збереженої процедури.

Часто змінні використовуються як лічильники в операторах WHILE і LOOP, a також у блоках IF...ELSE у пакетах або процедурах. Змінні можна застосовувати тільки у виразах, вони не повинні збігатися з іменами об'єктів і ключових слів.

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) і повертають строкові або числові значення

 

Користувальницькі функції

Оператор CREATE FUNCTION дозволяє створювати користувальницькі функції, оператор ALTER FUNCTION - модифікувати їх, а оператор DROP FUNCTION — видаляти. Будь-яке повне ім'я користувальницької функції повинне бути унікальним.

Користувальницька функція здатна приймати різне число параметрів (від 0 до 1024) і повертати як скалярне значення, так і таблицю. Якщо у параметра функції є значення за замовчуванням, то, щоб задати його при викликанні функції, варто ввести ключове слово DEFAULT. Цим параметри користувальницьких функцій відрізняються від параметрів збережених процедур, у яких при відсутності параметра також мається на увазі значення за замовчуванням. Користувальницькі функції не підтримують вихідні параметри.

Типи користувальницьких функцій

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

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

Скалярні функції повертають єдине значення, тип якого визначається конструкцією RETURNS. При цьому можна використати всі скалярні типи даних, включаючи bigint і sql_variant.

Тип даних timestamp, користувальницькі й не скалярні типи даних (наприклад, ’таблиця’ або ’курсор’) не підтримуються. Тіло функції в блоці BEGIN...END, містить набір операторів Transact-SQL, які повертають значення функції. Функція здатна повертати значення будь-якого типу, крім text, ntext, image, cursor і timestamp.

Табличні функції

Табличні функції повертають таблиці. Існують табличні функції двох типів:

· функції, які підставляються

· багатооператорні.

У табличних функцій, які підставляються, тіло відсутнє, і вони повертають таблицю, що, являє собою результуючий набір єдиного оператора SELECT.

Тіло багатооператорних функцій, повинно бути в блоці BEGIN... END, складається з операторів Transact-SQL, що виконують формування рядків і розміщення їх і повертає таблицю. Оператори із блоку BEGIN... END не повинні робити ніяких побічних ефектів. Побічним ефектом функції називаються будь-які постійні зміни стану ресурсу, область дії якого перебуває за межами функції (наприклад, модифікація таблиці бази даних). Операторам функцій дозволено вносити зміни тільки в локальні об'єкти функції, такі, як локальні курсори й змінні. Наприклад, за допомогою функції не можна модифікувати таблиці бази даних, виконувати операції над курсорами, які не є локальними для функції, розсилати електронну пошту, модифікувати каталог і генерувати результуючий набір, що повертається безпосередньо користувачеві.

Детермінованість функцій

В SQL Server є як детерміновані, так і недетерміновані функції. Детермінованою вважається функція, що повертає однакові результати, якщо її викликають із тим самим набором вхідних параметрів. Недетермінованою називається функція, якщо при її виклику з тим самим набором вхідних параметрів вона може повертати різні результати.

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

Функції конфігурації, курсорів, метаданих, безпеки і системної статистики (а також інші убудовані функції) відносяться до недетермінованих.




Поделиться с друзьями:


Дата добавления: 2015-06-29; Просмотров: 329; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.