추가 테이블 반환 매개 변수 메타데이터
응용 프로그램은 테이블 반환 매개 변수에 대한 메타데이터를 검색하기 위해 SQLProcedureColumns를 호출합니다. SQLProcedureColumns는 테이블 반환 매개 변수에 대해 단일 행을 반환합니다. 두 개의 추가 SQL Server 특정 열인 SS_TYPE_CATALOG_NAME 및 SS_TYPE_SCHEMA_NAME은 테이블 반환 매개 변수와 연결된 테이블 형식의 스키마 및 카탈로그 정보를 제공하기 위해 추가되었습니다. ODBC 사양에 따라 SS_TYPE_CATALOG_NAME 및 SS_TYPE_SCHEMA_NAME은 이전 버전의 SQL Server에 추가된 모든 드라이버별 열 앞에, 그리고 ODBC 자체에서 지정한 모든 열 뒤에 표시됩니다.
다음 표에서는 테이블 반환 매개 변수에서 중요한 열을 나열합니다.
열 이름 |
데이터 형식 |
값/설명 |
---|---|---|
DATA_TYPE |
NULL이 아닌 Smallint |
SQL_SS_TABLE |
TYPE_NAME |
NULL이 아닌 WVarchar(128) |
테이블 반환 매개 변수의 형식 이름입니다. |
COLUMN_SIZE |
Integer |
NULL |
BUFFER_LENGTH |
Integer |
0 |
DECIMAL_DIGITS |
Smallint |
NULL |
NUM_PREC_RADIX |
Smallint |
NULL |
NULLABLE |
NULL이 아닌 Smallint |
SQL_NULLABLE |
REMARKS |
Varchar |
NULL |
COLUMN_DEF |
WVarchar(4000) |
NULL |
SQL_DATA_TYPE |
NULL이 아닌 Smallint |
SQL_SS_TABLE |
SQL_DATETIME_SUB |
Smallint |
NULL |
CHAR_OCTET_LENGTH |
Integer |
NULL |
ORDINAL_POSITION |
NULL이 아닌 Integer |
매개 변수의 서수 위치입니다. |
IS_NULLABLE |
Varchar |
"YES" |
SS_TYPE_CATALOG_NAME |
NULL이 아닌 WVarchar(128) |
테이블 반환 매개 변수의 테이블 형식에 대한 형식 정의를 포함하는 카탈로그입니다. |
SS_TYPE_SCHEMA_NAME |
NULL이 아닌 WVarchar(128) |
테이블 반환 매개 변수의 테이블 형식에 대한 형식 정의를 포함하는 스키마입니다. |
WVarchar 열은 ODBC 사양에 Varchar로 정의되어 있지만 실제로는 최근의 모든 SQL Server ODBC 드라이버에서 WVarchar로 반환됩니다. 이러한 변경 내용은 ODBC 3.5 사양에 유니코드 지원이 추가될 때 적용되었지만 명시적으로 발표되지는 않았습니다.
응용 프로그램은 테이블 반환 매개 변수에 대한 추가 메타데이터를 얻기 위해 카탈로그 함수 SQLColumns 및 SQLPrimaryKeys를 사용합니다. 이러한 함수를 호출하여 테이블 반환 매개 변수를 얻으려면 응용 프로그램에서 문 특성 SQL_SOPT_SS_NAME_SCOPE를 SQL_SS_NAME_SCOPE_TABLE_TYPE으로 설정해야 합니다. 이 값은 응용 프로그램에서 실제 테이블이 아니라 테이블 형식의 메타데이터를 요구한다는 것을 나타냅니다. 그러면 응용 프로그램이 테이블 반환 매개 변수의 TYPE_NAME을 TableName 매개 변수로 전달합니다. SS_TYPE_CATALOG_NAME 및 SS_TYPE_SCHEMA_NAME은 각각 CatalogName 및 SchemaName 매개 변수와 함께 사용되어 테이블 반환 매개 변수의 카탈로그와 스키마를 확인합니다. 응용 프로그램이 테이블 반환 매개 변수의 메타데이터 검색을 마치면 SQL_SOPT_SS_NAME_SCOPE가 기본값인 SQL_SS_NAME_SCOPE_TABLE로 다시 설정됩니다.
SQL_SOPT_SS_NAME_SCOPE가 SQL_SS_NAME_SCOPE_TABLE로 설정되면 연결된 서버에 대한 쿼리가 실패합니다. 서버 구성 요소를 포함하는 카탈로그에 대해 SQLColumns 또는 SQLPrimaryKeys를 호출하면 실패합니다.