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 функции.

char към низ

Скаларни функции

Скаларна функция в SQL Server винаги приема параметри, единични или множество и връща една стойност . Скаларните функции са полезни при опростяването на нашия код. Да предположим, че може да имаме сложно изчисление, което се появява в редица заявки. В такъв случай можем да изградим скаларна функция, която капсулира формулата и я използва във всяка заявка, вместо във всяка заявка.

Следният синтаксис илюстрира създаването на скаларна функция в SQL Server:

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

Горните синтактични параметри са описани по-долу:

Първо ще дефинираме името на функцията след СЪЗДАВАНЕ НА ФУНКЦИЯ ключови думи. Името на схемата не е задължително. Ако няма да дефинираме името на схемата, 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 са дефинирана от потребителя функция който връща данни от тип таблица. Тъй като тази функция е връщаният тип е таблица , можем да го използваме по същия начин, както използваме таблица.

gimp как да премахнете отметката

Можем да категоризираме функцията с таблични стойности в два типа:

1. Функции за вградени таблични стойности

Тази UDF функция връща таблична променлива въз основа на действието, извършено от функцията. Трябва да се използва един оператор SELECT, за да се определи стойността на променливата на таблицата.

Пример

java потребителско въвеждане

Примерът по-долу ще създаде функция за таблични стойности и ще извлече данните от таблицата на служителите:

 --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: системни и дефинирани от потребителя функции.