다음을 통해 공유


SQLDescribeParam (SQL 매개변수 설명)

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 절에 매개 변수를 포함하거나 SUM 함수의 결과와 비교하여 ODBC 또는 Transact-SQL 문의 경우

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

  • 비교의 두 식에 매개 변수 표식이 포함된 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 및 Table-Valued 매개 변수

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

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

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

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

DataTypePtr ParameterSizePtr DecimalDigitsPtr
날짜 및 시간 SQL_타입_타임스탬프 23 3
스몰데이트타임 SQL_타입_타임스탬프 16 0
날짜 SQL_TYPE_DATE 10 0
시간 SQL_SS_TIME2 8, 10..16 0..7
datetime2은(는) 데이터베이스 날짜 및 시간 형식의 데이터 타입입니다. SQL_타입_타임스탬프 19, 21..27 0..7
DateTimeOffset (날짜 및 시간 오프셋) SQL_SS_TIMESTAMPOFFSET 26, 28..34 0..7

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

큰 CLR UDT에 대한 SQLDescribeParam 지원

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

또한 참조하십시오

SQLDescribeParam 함수
ODBC API 구현 정보