- •ЛЕКЦІЯ 12
- •План
- •Поняття функції користувача
- •Класи функцій користувача
- •Функції Scalar
- •Створити і застосувати функцію скалярного типу для обчислення сумарної кількості товару, що поступив
- •Функції Inline
- •Створити і застосувати функцію табличного типу для визначення двох найменувань товару з найбільшим
- •Функції Multi-statement
- •Підготовка даних
- •Створити і застосувати функцію (типу multi- statement), яка для деякого співробітника виводить список
- •Застосуємо створену функцію для визначення списку підлеглих співробітника ‘b’
- •Список підлеглих співробітника ‘a’
- •Вбудовані функції
- •Математичні функції
- •Використовування функції округлення до одного знака після коми для розрахунку податку
- •Рядкові функції
- •Функції для роботи з датою і часом
Створити і застосувати функцію (типу multi- statement), яка для деякого співробітника виводить список всіх його підлеглих (підлеглих як безпосередньо йому, так і опосередковано через
інших співробітників)
CREATE FUNCTION fn_findReports(@id_emp CHAR(2))
RETURNS @report TABLE(empid CHAR(2) PRIMARY KEY mgrid CHAR(2))
AS BEGIN
DECLARE @r INT
DECLARE @t TABLE(empid CHAR(2)
PRIMARY KEY mgrid CHAR(2) pr INT DEFAULT 0)
INSERT @t SELECT emp,mgr,0 FROM emp_mgr
WHERE emp=@id_emp SET @r=@@ROWCOUNT WHILE @r>0
Застосуємо створену функцію для визначення списку підлеглих співробітника ‘b’
SELECT * FROM |
emp |
mgr |
fn_findReports('b') |
b |
а |
|
e |
f |
|
f |
b |
|
g |
b |
Список підлеглих співробітника ‘a’
SELECT * FROM fn_findReports('a')
emp mgr
аNULL
bа
са
dа
ef
fb
gb
i с
кd
Вбудовані функції
математичні функції ;
рядкові функції ;
функції для роботи з датою і часом ;
функції конфігурування;
функції системи безпеки;
функції управління метаданими;
статистичні функції.
Математичні функції
ABS обчислює абсолютне значення числа
ACOS обчислює арккосинус
ASIN обчислює арксинус
ATAN обчислює арктангенс
ATN2 обчислює арктангенс з урахуванням квадратів
CEILING виконує округлення вгору
COS обчислює косинус кута
COT повертає котангенс кута
DEGREES перетворить значення кута з радіан в градуси
EXP повертає експоненту
FLOOR виконує округлення вниз
TAN повертає тангенс кута
LOG обчислює натуральний логарифм
LOG10 обчислює десятковий логарифм
PI повертає значення "пі“
POWER підносить число до ступеня
RADIANS перетворить значення кута з градуса в радіани
RAND повертає випадкове число
ROUND виконує округлення із заданою точністю
SIGN визначає знак числа
SIN обчислює синус кута
SQUARE виконує зведення числа в квадрат
SQRT витягує квадратний корінь
Використовування функції округлення до одного знака після коми для розрахунку податку
SELECT Товар.Назва, Операція.Кількість Round(Товар.Ціна*Операція.Кількість*0.05,1
)
AS Податок
FROM Товар INNER JOIN Операція ON Товар.КодТовара=Операція.КодТовара
Рядкові функції
ASCII повертає код ASCII лівого символу рядка
CHAR за кодом ASCII повертає символ
CHARINDEX визначає порядковий номер символу, з якого починається входження підрядка в рядок
DIFFERENCE повертає показник збігу рядків
LEFT повертає вказане число символів з початку рядка
LEN повертає довжину рядка
LOWER переводить всі символи рядка в нижній регістр
LTRIM видаляє пропуски на початку рядка
NCHAR повертає за кодом символ Unicode
PATINDEX виконує пошук підрядка в рядку за вказаним шаблоном
REPLACE замінює входження підрядка на вказане значення
QUOTENAME конвертує рядок у формат Unicode
REPLICATE виконує тиражування рядка певне число раз
REVERSE повертає рядок, символи якого записані в зворотному порядку
RIGHT повертає вказане число символів з кінця рядка
RTRIM видаляє пропуски в кінці рядка
SOUNDEX повертає код звучання рядка
SPACE повертає вказане число пропусків
STR виконує конвертацію значення числового типу в символьний формат
STUFF видаляє вказане число символів, замінюючи новим підрядком
SUBSTRING повертає для рядка підрядок вказаної довжини із заданого символу
UNICODE повертає Unicode-код лівого символу рядка
UPPER переводить всі символи рядка у верхній регістр
Функції для роботи з датою і часом
DATEADD додає до дати вказане значення днів, місяців, годинника і т.д.
DATEDIFF повертає різницю між вказаними частинами двох дат
DATENAME виділяє з дати вказану частину і повертає її в символьному форматі
DATEPART виділяє з дати вказану частину і повертає її в числовому форматі
DAY повертає число з вказаної дати
GETDATE повертає поточний системний час
ISDATE перевіряє правильність виразу на відповідність одному з можливих форматів введення дати
MONTH повертає значення місяця з вказаної дати
YEAR повертає значення року з вказаної дати
