SQL Server의 함수는 다음을 포함하는 데이터베이스 개체입니다. 특정 작업을 수행하는 SQL 문 집합 . 함수는 입력 매개변수를 받아들이고 작업을 수행한 다음 결과를 반환합니다. 함수는 항상 단일 값이나 테이블을 반환한다는 점에 유의해야 합니다. 함수의 주요 목적은 일반적인 작업을 쉽게 복제하는 것입니다. 함수를 한 번만 구축하면 필요에 따라 여러 위치에서 사용할 수 있습니다. SQL Server에서는 데이터베이스 테이블의 레코드를 삽입, 삭제 또는 업데이트하는 기능을 사용할 수 없습니다.
다음은 SQL Server 함수를 생성하는 규칙입니다.
- 함수에는 이름이 있어야 하며 이름은 @, $, # 등의 특수 문자 또는 기타 유사한 문자로 시작할 수 없습니다.
- SELECT 문은 함수와 함께 작동하는 유일한 문입니다.
- SQL의 SELECT 쿼리를 사용하면 AVG, COUNT, SUM, MIN, DATE 및 기타 함수와 같은 함수를 어디에서나 사용할 수 있습니다.
- 함수가 호출될 때마다 컴파일됩니다.
- 함수는 값이나 결과를 반환해야 합니다.
- 함수는 입력 매개변수만 사용합니다.
- 함수에서는 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에서 사용되는 모든 내장 데이터베이스 기능을 보여줍니다.
사용자 정의 함수
다음과 같은 기능 사용자가 만든 시스템 데이터베이스 또는 사용자 정의 데이터베이스에서는 사용자 정의 함수라고 합니다. UDF 함수는 매개변수를 승인하고 작업을 수행하며 결과를 반환합니다. 이러한 기능은 복잡한 비즈니스 로직을 캡슐화하고 필요에 따라 어디에서나 재사용할 수 있도록 하여 개발을 단순화하는 데 도움이 됩니다. 사용자 정의 함수를 사용하면 데이터를 쿼리하는 데 필요한 코드를 훨씬 쉽게 작성할 수 있습니다. 또한 쿼리 가독성과 기능이 향상될 뿐만 아니라 다른 사용자도 동일한 절차를 복제할 수 있습니다.
전기의 장점
SQL Server는 사용자 정의 함수를 주로 두 가지 유형으로 분류합니다.
모델 예입니다
- 스칼라 함수
- 테이블 값 함수
다음은 이러한 UDF 함수에 대한 설명입니다.
스칼라 함수
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;
이제 이 함수를 사용하여 정의된 테이블에 있는 판매 주문의 순매출을 계산할 수 있습니다.
스칼라 함수를 찾을 수 있는 다음 그림이 표시됩니다.
CSS 이미지 중앙 정렬
SQL Server의 기본 제공 함수와 동일하게 스칼라 함수를 호출할 수 있습니다. 예를 들어, 위의 udfNet_Sales 함수를 아래와 같이 호출할 수 있습니다.
SELECT dbo.udfNet_Sales(25, 500, 0.2) AS net_sales;
이 함수를 실행하면 순매출이 반환됩니다.
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의 테이블 반환 함수는 사용자 정의 함수 테이블 유형의 데이터를 반환합니다. 이 기능은 반환 유형은 테이블입니다. , 테이블을 사용하는 것과 같은 방식으로 사용할 수 있습니다.
테이블 반환 함수를 두 가지 유형으로 분류할 수 있습니다.
1. 인라인 테이블 값 함수
이 UDF 함수는 함수가 수행한 작업을 기반으로 테이블 변수를 반환합니다. 테이블 변수의 값을 결정하려면 단일 SELECT 문을 사용해야 합니다.
SIM 카드가 삽입되었지만 서비스가 없습니다.
예
아래 예에서는 테이블 값 함수를 생성하고 직원 테이블의 데이터를 검색합니다.
--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에서는 CREATE 키워드 대신 ALTER 키워드를 사용하여 테이블 반환 함수를 수정할 수도 있습니다. 나머지 스크립트는 동일합니다.
다중 문 테이블 반환 함수(MSTVF)
우분투의 ipconfig
이 UDF 함수 테이블 변수를 반환합니다. 함수에 의해 수행되는 작업을 기반으로 합니다. 단일 또는 여러 문을 포함하여 결과를 생성할 수 있으며, 여러 문에 대한 결과를 표 형식으로 반환하는 함수이기도 합니다. 이 함수에서 여러 문을 실행하고 집계된 결과를 반환된 테이블로 가져올 수 있기 때문에 유용합니다. 테이블 변수를 반환 값으로 사용하여 이 함수를 정의할 수 있습니다. 함수 내에서 여러 쿼리를 실행하고 이 테이블 변수에 데이터를 삽입합니다.
다음 예에서는 함수 이름을 만듭니다. '다중값' '를 반환합니다. @직원' 테이블. 여기에는 id, emp_name 및 급여라는 세 개의 필드가 포함되어 있습니다. '직원' 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
SELECT 쿼리의 FROM 절을 사용하여 다중 문 테이블 반환 함수를 호출할 수 있습니다. 예를 들어 , 위 함수를 아래와 같이 호출할 수 있습니다.
SELECT * FROM MULTIVALUED();
이 함수를 실행하면 아래 결과가 반환됩니다.
테이블 반환 함수는 언제 사용해야 합니까?
테이블 반환 함수는 일반적으로 매개 변수가 있는 뷰로 사용됩니다. 테이블 반환 함수는 테이블이 사용되는 모든 곳에서 사용할 수 있으므로 저장 프로시저보다 더 유연합니다.
결론
이 문서에서는 SQL Server에서 사용되는 기능의 전체 개요를 설명합니다. 여기서는 SQL Server에서 사용되는 함수의 두 가지 유형, 즉 시스템 함수와 사용자 정의 함수를 주로 배웠습니다.