다음을 통해 공유


SQLDescribeParam

SQL 문의 매개 변수를 설명하기 위해 SQL Server Native Client ODBC 드라이버는 준비된 ODBC 문 핸들에서 SQLDescribeParam이 호출되면 Transact-SQL SELECT 문을 빌드하고 실행합니다. 결과 집합의 메타데이터에 따라 준비된 문의 매개 변수 특징이 결정됩니다. SQLDescribeParam은 SQLExecute 또는 SQLExecDirect에서 반환할 수 있는 오류 코드를 반환할 수 있습니다.

SQL Server 2012부터 데이터베이스 엔진이 개선되어 SQLDescribeParam이 예상 결과에 대한 보다 정확한 설명을 얻을 수 있습니다. 이러한 보다 정확한 결과는 이전 버전의 SQL Server SQLDescribeParam에서 반환한 값과 다를 수 있습니다. 자세한 내용은 메타데이터 검색을 참조하세요.

또한 SQL Server 2012의 새로운 기능인 ParameterSizePtr는 이제 ODBC 사양에 정의된 대로 해당 매개 변수 표식의 열 또는 식의 크기(문자)에 대한 정의와 일치하는 값을 반환합니다. 이전 버전의 SQL Server Native Client ParameterSizePtr은 형식의 해당 값 SQL_DESC_OCTET_LENGTH 이거나 형식에 대해 SQLBindParameter에 제공된 관련 없는 열 크기 값일 수 있으며, 값은 무시해야 합니다(SQL_INTEGER예: ).

드라이버는 다음과 같은 상황에서 SQLDescribeParam 호출을 지원하지 않습니다.

  • FROM 절을 포함하는 Transact-SQL UPDATE 또는 DELETE 문에 대한 SQLExecDirect 이후입니다.

  • HAVING 절에 매개 변수를 포함하는 ODBC 또는 Transact-SQL 문의 경우 또는 SUM 함수의 결과와 비교됩니다.

  • 매개 변수를 포함하는 하위 쿼리에 따라 ODBC 또는 Transact-SQL 문의 경우

  • 정량화된 조건자 또는 비교 like의 두 식에 모두 매개 변수 표식이 포함된 ODBC SQL 문의 경우

  • 매개 변수 중 하나가 함수에 대한 매개 변수인 쿼리의 경우

  • Transact-SQL 명령에 주석(/* */)이 있는 경우

Transact-SQL 문의 일괄 처리를 처리할 때 드라이버는 일괄 처리의 첫 번째 문 다음에 있는 문에서 매개 변수 표식에 대해 SQLDescribeParam 호출을 지원하지 않습니다.

준비된 저장 프로시저의 매개 변수를 설명할 때 SQLDescribeParam은 시스템 저장 프로시저 sp_sproc_columns 사용하여 매개 변수 특성을 검색합니다. sp_sproc_columns 현재 사용자 데이터베이스 내의 저장 프로시저에 대한 데이터를 보고할 수 있습니다. 정규화된 저장 프로시저 이름을 준비하면 SQLDescribeParam이 데이터베이스에서 실행할 수 있습니다. 예를 들어 시스템 저장 프로시저 sp_who 다음과 같이 모든 데이터베이스에서 준비하고 실행할 수 있습니다.

SQLPrepare(hstmt, "{call sp_who(?)}", SQL_NTS);  

성공적으로 준비한 후 SQLDescribeParam을 실행하면 가 아닌 master데이터베이스에 연결되면 빈 행 집합이 반환됩니다. 다음과 같이 준비된 동일한 호출로 인해 현재 사용자 데이터베이스에 관계없이 SQLDescribeParam이 성공합니다.

SQLPrepare(hstmt, "{call master..sp_who(?)}", SQL_NTS);  

큰 값 데이터 형식의 경우 DataTypePtr 에서 반환되는 값은 SQL_VARCHAR, SQL_VARBINARY 또는 SQL_NVARCHAR. 큰 값 데이터 형식 매개 변수의 크기가 "무제한"임을 나타내기 위해 SQL Server Native Client ODBC 드라이버는 ParameterSizePtr를 0으로 설정합니다. 표준 varchar 매개 변수에 대해서는 실제 크기 값이 반환됩니다.

참고

매개 변수가 이미 SQL_VARCHAR, SQL_VARBINARY 또는 SQL_WVARCHAR 매개 변수의 최대 크기와 바인딩되어 있으면 "제한 없음"이 아니라 매개 변수의 바인딩된 크기가 반환됩니다.

"제한 없음" 크기 입력 매개 변수를 바인딩하려면 실행 시 데이터를 사용해야 합니다. "무제한" 크기 출력 매개 변수를 바인딩할 수 없습니다(결과 집합에 대해 SQLGetData 와 같이 출력 매개 변수에서 데이터를 스트리밍하는 방법은 없습니다).

출력 매개 변수의 경우 버퍼를 바인딩해야 하며, 값이 너무 크면 버퍼가 채워지고 SQL_SUCCESS_WITH_INFO 메시지가 "문자열 데이터의 오른쪽이 잘렸습니다."라는 경고와 함께 반환됩니다. 잘린 데이터는 삭제됩니다.

SQLDescribeParam와 테이블 반환 매개 변수

애플리케이션은 SQLDescribeParam을 사용하여 준비된 문에 대한 테이블 반환 매개 변수 정보를 검색할 수 있습니다. 자세한 내용은 준비된 문에 대한 테이블 반환 매개 변수 메타데이터를 참조하세요.

일반적으로 테이블 반환 매개 변수에 대한 자세한 내용은 테이블 반환 매개 변수(ODBC)를 참조하세요.

향상된 날짜 및 시간 기능에 대한 SQLDescribeParam 지원

날짜/시간 형식에 대해 반환되는 값은 다음과 같습니다.

DataTypePtr ParameterSizePtr DecimalDigitsPtr
Datetime SQL_TYPE_TIMESTAMP 23 3
smalldatetime SQL_TYPE_TIMESTAMP 16 0
날짜 SQL_TYPE_DATE 10 0
time SQL_SS_TIME2 8, 10..16 0..7
datetime2 SQL_TYPE_TIMESTAMP 19, 21..27 0..7
datetimeoffset SQL_SS_TIMESTAMPOFFSET 26, 28..34 0..7

자세한 내용은 날짜 및 시간 개선 사항(ODBC)을 참조하세요.

큰 CLR UDT에 대한 SQLDescribeParam 지원

SQLDescribeParam는 큰 CLR UDT(사용자 정의 형식)를 지원합니다. 자세한 내용은 큰 CLR User-Defined 형식(ODBC)을 참조하세요.

참고 항목

SQLDescribeParam 함수(SQLDescribeParam Function)
ODBC API 구현 정보