스칼라 함수 호출

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

{fnscalar-function}

여기서 스칼라 함수 는 부록 E: 스칼라 함수에 나열된 함수 중 하나입니다. 스칼라 함수 이스케이프 시퀀스에 대한 자세한 내용은 부록 C: SQL 문법의 스칼라 함수 이스케이프 시퀀스를 참조하세요.

예를 들어 다음 SQL 문은 대문자 고객 이름의 동일한 결과 집합을 만듭니다. 첫 번째 문은 이스케이프 시퀀스 구문을 사용합니다. 두 번째 문은 OS/2용 Ingres에 대한 네이티브 구문을 사용하며 상호 운용할 수 없습니다.

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

애플리케이션은 네이티브 구문을 사용하는 스칼라 함수에 대한 호출과 ODBC 구문을 사용하는 스칼라 함수에 대한 호출을 혼합할 수 있습니다. 예를 들어 Employee 테이블의 이름이 성, 쉼표 및 이름으로 저장된다고 가정합니다. 다음 SQL 문은 Employee 테이블에 직원의 성 결과 집합을 만듭니다. 이 문은 ODBC 스칼라 함수 SUBSTRING 및 SQL Server 스칼라 함수 CHARINDEX 를 사용하며 SQL Server에서만 올바르게 실행됩니다.

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

최대 상호 운용성을 위해 애플리케이션은 CONVERT 스칼라 함수를 사용하여 스칼라 함수의 출력이 필수 형식인지 확인해야 합니다. CONVERT 함수는 데이터를 하나의 SQL 데이터 형식에서 지정된 SQL 데이터 형식으로 변환합니다. CONVERT 함수의 구문은 다음과 입니다.

CONVERT(value_exp,data_type)

여기서 value_exp 열 이름, 다른 스칼라 함수의 결과 또는 리터럴 값이며, data_type 부록 D: 데이터 형식에 정의된 대로 SQL 데이터 형식 식별자가 사용하는 #define 이름과 일치하는 키워드(keyword). 예를 들어 다음 SQL 문은 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 함수에서 지원하는 변환 작업을 결정하기 위해 애플리케이션은 SQL_CONVERT 시작하는 옵션을 사용하여 SQLGetInfo를 호출 합니다.