logo

Функції SQL Server

Функції в SQL Server — це об’єкти бази даних, які містять a набір інструкцій SQL для виконання конкретного завдання . Функція приймає вхідні параметри, виконує дії, а потім повертає результат. Слід зазначити, що функції завжди повертають або одне значення, або таблицю. Основна мета функцій — легко повторити загальне завдання. Ми можемо створити функції один раз і використовувати їх у кількох місцях залежно від наших потреб. SQL Server не дозволяє використовувати функції для вставки, видалення або оновлення записів у таблицях бази даних.

Нижче наведено правила створення функцій SQL Server:

  • Функція повинна мати назву, яка не може починатися зі спеціального символу, наприклад @, $, # або інших подібних символів.
  • Інструкції SELECT є єдиними, які працюють з функціями.
  • Ми можемо використовувати будь-де такі функції, як AVG, COUNT, SUM, MIN, DATE та інші функції із запитом SELECT у SQL.
  • Коли функція викликається, вона компілюється.
  • Функції повинні повертати значення або результат.
  • Функції використовують лише вхідні параметри.
  • Ми не можемо використовувати оператори TRY і CATCH у функціях.

Типи функцій

SQL Server поділяє функції на два типи:

  • Системні функції
  • Функції, визначені користувачем

Опишемо обидва види докладніше.

Системні функції

Функції, які визначаються системою, відомі як системні функції. Іншими словами, все вбудовані функції які підтримуються сервером, називаються системними функціями. Вбудовані функції економлять час під час виконання конкретного завдання. Ці типи функцій зазвичай працюють із оператором SQL SELECT для обчислення значень і обробки даних.

Ось список деяких системних функцій, які використовуються в SQL Server:

  • Рядкові функції (LEN, SUBSTRING, REPLACE, CONCAT, TRIM)
  • Функції дати й часу (datetime, datetime2, smalldatetime)
  • Агрегатні функції (COUNT, MAX, MIN, SUM, AVG)
  • Математичні функції (ABS, POWER, PI, EXP, LOG)
  • Функції ранжирування (RANK, DENSE_RANK, ROW_NUMBER, NTILE)

На наступному малюнку показано всі вбудовані функції бази даних, які використовуються в SQL Server:

Функції SQL Server

Функції, визначені користувачем

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

SQL Server класифікує визначені користувачем функції в основному на два типи:

  1. Скалярні функції
  2. Табличні функції

Ось описи цих функцій UDF.

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

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

Нижче наведено синтаксис, який ілюструє створення скалярної функції в SQL Server:

 CREATE FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END 

Наведені вище синтаксичні параметри описані нижче:

сортування java arraylist

Спочатку ми визначимо назву функції після СТВОРИТИ ФУНКЦІЮ ключові слова. Назва схеми необов’язкова. Якщо ми не визначимо назву схеми, SQL Server використовує схему за замовчуванням dbo . Далі визначимо список параметри в дужках. По-третє, ми напишемо оператори для функції, а потім у ПОВЕРНЕННЯ визначте тип даних значення, що повертається. Нарешті, ми додали оператор RETURN для повернення значення всередині тіла функції.

приклад

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

 CREATE FUNCTION udfNet_Sales( @quantity INT, @price DEC(10,2), @discount DEC(3,2) ) RETURNS DEC(10,2) AS BEGIN RETURN @quantity * @price * (1 - @discount); END; 

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

На наступному зображенні можна знайти скалярні функції:

Функції SQL Server

Ми можемо називати скалярні функції так само, як вбудовану функцію в SQL Server. Наприклад, ми можемо викликати наведену вище функцію udfNet_Sales, як показано нижче:

 SELECT dbo.udfNet_Sales(25, 500, 0.2) AS net_sales; 

Виконання цієї функції поверне чисті продажі:

Функції SQL Server

SQL Server також дозволяє нам щоб змінити скалярну функцію за допомогою ALTER ключове слово. Ось синтаксис для цього:

 ALTER FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END 

Ми можемо використати наведений нижче оператор, щоб видалити скалярну функцію з бази даних SQL Server:

 DROP FUNCTION [schema_name.]function_name; 

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

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

як відкрити приховані програми на android

Ми можемо розділити табличні функції на два типи:

1. Вбудовані функції таблиці значень

Ця функція UDF повертає змінну таблиці на основі дії, яку виконує функція. Для визначення значення табличної змінної слід використовувати один оператор SELECT.

приклад

mysql вставити в

У наведеному нижче прикладі буде створено функцію табличних значень і отримано дані з таблиці співробітників:

 --It creates a table-valued function to get employees CREATE FUNCTION fudf_GetEmployee() RETURNS TABLE AS RETURN (SELECT * FROM Employee) 

У цьому синтаксисі, ТАБЛИЦЯ ПОВЕРНЕНЬ вказує, що функція повертатиме таблицю. Оскільки немає ПОЧАТОК...КІНЕЦЬ оператор, він просто запитує дані з таблиці співробітників. Крім того, якщо він не має жодних параметрів, він буде викликаний безпосередньо.

Ми можемо викликати табличні функції за допомогою ВІД положення ВИБРАТИ запит. Наприклад , ми можемо назвати вище udf_GetEmployee функціонувати, як показано нижче:

 SELECT * FROM udf_GetEmployee(); 

Виконання цієї функції поверне такий результат:

Функції SQL Server

SQL Server також дозволяє змінювати табличні функції за допомогою ключового слова ALTER замість ключового слова CREATE. Решта сценарію така сама.

Функції з табличними значеннями з кількома операторами (MSTVF)

Ця функція UDF повертає табличну змінну на основі дії, яку виконує функція. Він може містити один або декілька операторів для отримання результату, а також це функція, яка повертає результат кількох операторів у табличній формі. Це корисно, тому що ми можемо виконати кілька операторів у цій функції та отримати зведені результати у повернуту таблицю. Ми можемо визначити цю функцію, використовуючи табличну змінну як значення, що повертається. Усередині функції ми виконуємо кілька запитів і вставляємо дані в цю змінну таблиці.

У наступному прикладі створюється ім’я функції 'Багатозначний' що повертає ' @Працівник' стіл. Він містить три поля з назвами id, emp_name і salary від 'Співробітник' таблицю за допомогою оператора INSERT, а потім використовує оператор UPDATE для оновлення імені співробітника.

 CREATE FUNCTION MULTIVALUED() RETURNS @Employee TABLE (id INT, emp_name VARCHAR(50), salary INT) AS BEGIN INSERT INTO @Employee SELECT E.id, E.emp_name, E.salary FROM Employee E; UPDATE @Employee SET emp_name = 'Graeme Smith' WHERE id = 3; RETURN END 

Ми можемо викликати табличні функції з кількома операторами, використовуючи речення FROM запиту SELECT. Наприклад , ми можемо викликати наведену вище функцію, як показано нижче:

 SELECT * FROM MULTIVALUED(); 

Виконання цієї функції поверне такий результат:

Функції SQL Server

Коли слід використовувати табличні функції?

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

Висновок

У цій статті пояснюється повний огляд функцій, які використовуються в SQL Server. Тут ми вивчили головним чином два типи функцій, які використовуються в SQL Server: системні та призначені для користувача функції.