2 augusti, 2019 Incopia

sql function 예제

CLR 함수의 반환 데이터 형식이 테이블 형식(RETURNS TABLE)을 지정하는 경우 메서드의 반환 데이터 형식은 IEnumerator 또는 IEnumerable 형식이어야 하며 함수 작성자가 인터페이스를 구현한다고 가정합니다. 거래-SQL 함수와 달리 CLR 함수는

기본 키, 고유 또는 CHECK 제약 조건을 포함할 수 없습니다.

지정된 열의 데이터 형식은 실행 시 메서드에서 반환하는 결과 집합의 해당 열 형식과 일치해야 합니다. 이 형식 검사는 함수를 만들 때 수행되지 않습니다. 결정함수는 동일한 입력 매개 변수 집합으로 호출될 때 동일한 결과를 반환합니다. 두 숫자를 함께 추가하는 것은 결정적 함수의 예입니다. 이 데이터에 대한 두 번째 규칙이 있지만 ”가장 낮은 급여를 받는 직원의 급여보다 10 배 더 큰 급여를 받는 직원은 없을 수 있습니다”라고 말합니다. CHECK 제약 조건에 하위 쿼리를 추가하려고 하면 ”이 컨텍스트에서는 하위 쿼리가 허용되지 않는다는 오류가 발생하기 때문에 이것은 조금 까다롭습니다. 스칼라 표현식만 허용됩니다.” SQL Server는 현명하게 쿼리 출력을 단일 값과 비교하지 못하게 합니다.

이 비교를 인라인으로 넣을 수 없으므로 스칼라 UDF를 만들고 함수를 사용하여 데이터를 비교해야 합니다. SQL Server는 사용자 정의 스칼라 기능 외에도 다양한 유형의 기본 제공 스칼라 함수를 제공하며, 그 중 일부는 나중에 자세히 다룹니다. 예를 들어 GETDATE, SUBSTRING과 같은 문자열 함수와 같은 여러 기본 제공 날짜 함수가 있으며, 모두 단일 값에 대해 작동하고 단일 값을 반환합니다. 또한 값 집합에 대한 계산을 수행하고 단일 값을 반환하는 집계 함수와 각 입력 행에 대해 하나의 행을 생성하는 몇 가지 순위 함수도 있습니다. 데이터에 액세스하지 않는 UDF를 만드는 경우 SCHEMABINDING 옵션을 지정합니다. 이렇게 하면 쿼리 최적화 프로그램이 이러한 UdF와 관련된 쿼리 계획에 대해 불필요한 스풀 연산자를 생성하지 못하게 됩니다.