다음을 통해 공유


srv_convert(확장 저장 프로시저 API)

적용 대상: SQL Server

Important

SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. 대신 CLR 통합을 사용합니다.

데이터를 한 데이터 형식에서 다른 데이터 형식으로 변경합니다.

구문

  
int srv_convert (  
SRV_PROC *  
srvproc  
,  
int  
srctype  
,  
void *  
src  
,  
DBINT  
srclen  
,  
int  
desttype  
,  
void *  
  dest  
,  
DBINT  
destlen  
);  

인수

srvproc
특정 클라이언트 연결에 대한 핸들인 SRV_PROC 구조체에 대한 포인터입니다. 이 구조에는 확장 저장 프로시저 API가 애플리케이션과 클라이언트 간의 통신 및 데이터를 관리하는 데 사용하는 모든 컨트롤 정보가 포함됩니다. srvproc 핸들을 제공하면 오류가 발생할 경우 확장 저장 프로시저 API 오류 처리기로 해당 핸들이 전달됩니다.

srctype
변환할 데이터의 데이터 형식을 지정합니다. 이 매개 변수는 확장 저장소 프로시저 API 데이터 형식일 수 있습니다.

src
변환할 데이터에 대한 포인터입니다. 이 매개 변수는 확장 저장소 프로시저 API 데이터 형식일 수 있습니다.

srclen
변환할 데이터의 길이(바이트)를 지정합니다. srclen이 0이면 srv_convert 대상 변수에 null 값을 배치합니다. 0이 아니면 고정 길이 데이터 형식에 대해 이 매개 변수가 무시됩니다. 이 경우 원본 데이터는 NULL로 간주됩니다. SRVCHAR 데이터 형식의 데이터에 대해 길이가 -1이면 문자열이 null로 종료됨을 나타냅니다.

desttype
원본을 변환할 데이터 형식을 지정합니다. 이 매개 변수는 확장 저장소 프로시저 API 데이터 형식일 수 있습니다.

dest
변환된 데이터를 수신하는 대상 변수에 대한 포인터입니다. 이 포인터가 NULL 이면 srv_convert 사용자가 제공한 오류 처리기(있는 경우)를 호출하고 -1을 반환합니다.

desttype이 SRVDECIMAL이나 SRVNUMERIC인 경우 dest 매개 변수는 구조의 전체 자릿수 및 소수 자릿수 필드가 원하는 값으로 설정되어 있는 DBNUMERIC 또는 DBDECIMAL 구조에 대한 포인터여야 합니다. DEFAULTPRECISION을 사용하여 기본 전체 자릿수를 지정하고 DEFAULTSCALE을 사용하여 기본 소수 자릿수를 지정할 수 있습니다.

destlen
대상 변수의 길이(바이트)를 지정합니다. 이 매개 변수는 고정 길이 데이터 형식에 대해 무시됩니다. SRVCHAR 유형의 대상 변수에서 destlen 값은 대상 버퍼 공간의 총 길이여야 합니다. SRVCHAR 또는 SRVBINARY 유형의 대상 변수에서 길이 -1은 사용 가능한 충분한 공간이 있음을 나타냅니다. srvchar 형식의 대상 변수의 경우 길이가 -1이면 문자열이 null로 종료됩니다.

반품

데이터 형식 변환에 성공하면 변환된 데이터의 길이(바이트)입니다. srv_convert에서 지원하지 않는 변환 요청을 발견하면 개발자가 제공한 오류 처리기(있는 경우)를 호출하며, 전역 오류 번호를 설정하고 -1을 반환합니다.

설명

srv_willconvert 함수는 특정 변환의 허용 여부를 결정합니다.

SRVFLT4 또는 SRVFLT8 대략적인 숫자 데이터 형식으로 변환하면 정밀도가 약간 손실될 수 있습니다. 근사치 데이터 형식 SRVFLT4 또는 SRVFLT8을 SRVCHAR 또는 SRVTEXT로 변환하는 경우에도 전체 자릿수 손실이 발생할 수 있습니다.

SRVFLTx, SRVINTx, SRVMONEY, SRVMONEY4, SRVDECIMAL 또는 SRVNUMERIC으로 변환하면 숫자가 대상의 최대값보다 크거나 숫자가 대상의 최소값보다 작은 경우 언더플로가 발생할 수 있습니다. SRVCHAR 또는 SRVTEXT로 변환할 때 오버플로가 발생하면 결과 값의 첫 문자에 오류를 나타내는 별표(*)가 포함됩니다.

SRVCHAR를 SRVBINARY 로 변환할 때 srv_convert 문자열에 선행 0이 포함되어 있는지 여부에 관계없이 SRVCHAR를 16진수로 해석합니다. SRVBINARY를 SRVCHAR로 변환하는 경우에는 srv_convert에서 선행 0 없이 16진수 문자열을 만듭니다. 다른 모든 경우에서 SRVBINARY 데이터 형식으로 또는 SRVBINARY 데이터 형식에서의 변환은 직선 비트 복사입니다.

경우에 따라 데이터 형식을 자체로 변환하는 것이 유용할 수 있습니다. 예를 들어 destlen이 -1인 SRVCHAR를 SRVCHAR로 변환하면 문자열에 null 종결자가 추가됩니다.

데이터 형식 및 확장 저장 프로시저 API 데이터 형식 변환에 대한 설명은 데이터 형식(확장 저장 프로시저 API)을 참조하세요.

srv_convert 함수는 다음과 같은 여러 가지 이유로 실패할 수 있습니다.

  • 요청된 변환을 사용할 수 없습니다.

  • 변환으로 인해 대상 변수에서 잘림, 오버플로 또는 전체 자릿수 손실이 발생했습니다.

  • 문자열을 숫자 데이터 형식으로 변환하는 동안 구문 오류가 발생했습니다.

Important

확장 저장 프로시저의 소스 코드를 철저히 검토해야 하며, 프로덕션 서버에 설치하기 전에 컴파일된 DLL을 테스트해야 합니다. 보안 검토 및 테스트에 대한 자세한 내용은 이 Microsoft 웹 사이트를 참조하세요.

참고 항목

srv_setutype(확장 저장 프로시저 API)
srv_willconvert(확장 저장 프로시저 API)