다음을 통해 공유


스칼라 함수 호출

스칼라 함수는 각 행의 값을 반환합니다. 예를 들면, 절대값 스칼라 함수는 숫자 열을 인수로 사용하기 때문에 열에 있는 각 값의 절대값을 반환합니다. 스칼라 함수를 호출하기 위한 이스케이프 시퀀스는 다음과 같습니다

{fn 스칼라 함수 }

여기에서 스칼라 함수 는 부록 E: 스칼라 함수에 나열되어 있는 함수 중 하나입니다. 스칼라 함수 이스케이프 시퀀스에 대한 자세한 정보는 부록 C: 구조적 쿼리 언어 문법의 스칼라 함수 이스케이프 시퀀스를 참고해 주세요.

예를 들면, 다음의 구조적 쿼리 언어 문은 대문자 고객 이름의 동일한 결과 집합을 만들어 냅니다. 첫 번째 문은 이스케이프 시퀀스 구문을 사용합니다. 두 번째 문에서는 OS/2용 인그레스의 기본 구문을 사용하며 상호 운용을 할 수 없습니다.

SELECT {fn UCASE(Name)} FROM Customers  
  
SELECT uppercase(Name) FROM Customers  

애플리케이션은 기본 구문을 사용하는 스칼라 함수에 대한 호출과 ODBC 구문을 사용하는 스칼라 함수에 대한 호출을 혼합할 수 있습니다. 예를 들면, 직원 테이블의 이름이 성, 쉼표 및 이름으로 저장된다고 가정해 보세요. 다음의 구조적 쿼리 언어 문은 직원 테이블에 직원의 성으로 만들어진 결과 집합을 만듭니다. 이 문에서는 ODBC 스칼라 함수 SUBSTRING 및 구조적 쿼리 언어 서버 스칼라 함수 CHARINDEX 를 사용하며 SQL Server에서만 올바르게 실행해 주세요.

SELECT {fn SUBSTRING(Name, 1, CHARINDEX(',', Name) - 1)} FROM Customers  

최대 상호 운용성을 위한 애플리케이션은 CONVERT 스칼라 함수를 사용하여 스칼라 함수의 출력이 필수 형식인지 반드시 확인해야 합니다. CONVERT 함수는 하나의 데이터 유형에서 지정된 구조적 쿼리 언어 데이터 유형으로 변환해 주세요. CONVERT 함수의 구문은 다음과 같습니다

CONVERT( value_exp, data_type)

여기에서 value_exp 열 이름, 다른 스칼라 함수의 결과 혹은 리터럴 값이고, data_type부록 D: 데이터 형식에서 정의한 것처럼 구조적 쿼리 언어 데이터 형식 식별자에서 사용하는 #define 이름과 일치하는 키워드입니다. 예를 들면, 다음의 구조적 쿼리 언어 문은 CONVERT 함수를 사용하여 CURDATE 함수의 출력이 타임스탬프 혹은 문자 데이터 대신에 날짜인지 확인해 주세요:

INSERT INTO Orders (OrderID, CustID, OpenDate, SalesPerson, Status)  
   VALUES (?, ?, {fn CONVERT({fn CURDATE()}, SQL_DATE)}, ?, ?)  

데이터 원본에서 지원되는 스칼라 함수를 확인하기 위한 애플리케이션은 SQL_CONVERT_FUNCTIONS, SQL_NUMERIC_FUNCTIONS, SQL_STRING_FUNCTIONS, SQL_SYSTEM_FUNCTIONS 및 SQL_TIMEDATE_FUNCTIONS 옵션을 사용해서 SQLGetInfo를 호출해 주세요. CONVERT 함수에서 지원되고 있는 변환 작업을 결정하기 위해 애플리케이션은 구조적 쿼리 언어_CONVERT 시작하는 옵션을 사용하여 SQLGetInfo를 호출합니다.