SQLDescribeParam
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
SQL 문의 매개 변수를 설명하기 위해 SQL Server Native Client ODBC 드라이버는 준비된 ODBC 문 핸들에서 SQLDescribeParam이 호출될 때 Transact-SQL SELECT 문을 빌드하고 실행합니다. 결과 집합의 메타데이터에 따라 준비된 문의 매개 변수 특징이 결정됩니다. SQLDescribeParam은 SQLExecute 또는 SQLExecDirect에서 반환할 수 있는 오류 코드를 반환할 수 있습니다.
SQL Server 2012(11.x)부터 데이터베이스 엔진이 개선되어 SQLDescribeParam이 예상 결과에 대한 보다 정확한 설명을 얻을 수 있습니다. 이러한 보다 정확한 결과는 이전 버전의 SQL Server에서 SQLDescribeParam에서 반환한 값과 다를 수 있습니다. 자세한 내용은 메타데이터 검색을 참조하세요.
또한 SQL Server 2012(11.x)의 새로운 기능인 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을 실행하면 마스터가 아닌 데이터베이스에 연결되면 빈 행 집합이 반환됩니다. 다음과 같이 준비된 동일한 호출은 현재 사용자 데이터베이스에 관계없이 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 지원
날짜/시간 형식에 대해 반환되는 값은 다음과 같습니다.
attribute | DataTypePtr | ParameterSizePtr | DecimalDigitsPtr |
---|---|---|---|
날짜/시간 | SQL_TYPE_TIMESTAMP | 23 | 3 |
smalldatetime | SQL_TYPE_TIMESTAMP | 16 | 0 |
date | 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(사용자 정의 형식)를 지원합니다. 자세한 내용은 ODBC(큰 CLR 사용자 정의 형식)를 참조하세요.