SQLSetStmtAttr
SQL Server Native Client ODBC 드라이버는 혼합(키 집합/동적) 커서 모델을 지원하지 않습니다. SQL_ATTR_KEYSET_SIZE를 사용하여 키 집합 크기를 0이 아닌 값으로 설정하려고 하면 오류가 발생합니다.
응용 프로그램은 SQLFetch 또는 SQLFetchScroll 함수 호출에서 반환된 행 수를 선언하기 위해 모든 문에서 SQL_ATTR_ROW_ARRAY_SIZE를 설정합니다. 드라이버는 서버 커서를 지정하는 문에서 커서의 인출 요청을 충족하기 위해 SQL_ATTR_ROW_ARRAY_SIZE를 사용하여 서버가 생성하는 행 블록의 크기를 결정합니다. 트랜잭션 격리 수준이 커밋된 트랜잭션의 반복 읽기를 보장하는 데 충분하다면 행 멤버 자격 및 정렬이 동적 커서의 블록 크기 내에서 고정됩니다. 이 값으로 지정된 블록 밖에서는 커서가 완전히 동적입니다. 서버 커서 블록 크기는 완전히 동적이며 인출 처리 중 임의 시점에 변경될 수 있습니다.
SQLSetStmtAttr 및 테이블 반환 매개 변수
테이블 반환 매개 변수 열의 설명자 필드에 액세스하기 전에 SQLSetStmtAttr을 사용하여 APD(응용 프로그램 매개 변수 설명자)의 SQL_SOPT_SS_PARAM_FOCUS를 설정할 수 있습니다.
SQL_SOPT_SS_PARAM_FOCUS를 테이블 반환 매개 변수가 아닌 매개 변수의 서수로 설정하려고 하면 SQLSetStmtAttr이 SQL_ERROR를 반환하고 SQLSTATE = HY024 및 "잘못된 특성 값입니다" 메시지가 표시되며 진단 레코드가 생성됩니다. SQL_SOPT_SS_PARAM_FOCUS는 SQL_ERROR가 반환될 때 변경되지 않습니다.
SQL_SOPT_SS_PARAM_FOCUS를 0으로 설정하면 매개 변수의 설명자 레코드에 대한 액세스가 복원됩니다.
SQLSetStmtAttr을 사용하여 SQL_SOPT_SS_NAME_SCOPE를 설정할 수도 있습니다. 자세한 내용은 이 항목의 뒷부분에 나오는 SQL_SOPT_SS_NAME_SCOPE 섹션을 참조하십시오.
자세한 내용은 준비된 문의 테이블 반환 매개 변수 메타데이터를 참조하십시오.
테이블 반환 매개 변수에 대한 자세한 내용은 테이블 반환 매개 변수(ODBC)를 참조하십시오.
스파스 열에 대한 SQLSetStmtAttr 지원
SQLSetStmtAttr을 사용하여 SQL_SOPT_SS_NAME_SCOPE를 설정할 수 있습니다. 자세한 내용은 이 항목의 뒷부분에 나오는 SQL_SOPT_SS_NAME_SCOPE 섹션을 참조하십시오. 스파스 열에 대한 자세한 내용은 스파스 열 지원(ODBC)을 참조하십시오.
문 특성
SQL Server Native Client ODBC 드라이버는 다음과 같은 드라이버별 문 특성도 지원합니다.
SQL_SOPT_SS_CURSOR_OPTIONS
SQL_SOPT_SS_CURSOR 특성은 드라이버가 커서에 드라이버별 성능 옵션을 사용할지 여부를 지정합니다. 이러한 옵션이 설정되어 있으면 SQLGetData가 허용되지 않습니다. 기본 설정은 SQL_CO_OFF입니다. ValuePtr 값은 SQLLEN 유형입니다.
ValuePtr 값 |
설명 |
---|---|
SQL_CO_OFF |
기본값입니다. 빠른 정방향 전용, 읽기 전용 커서 및 자동 인출을 해제하고 정방향 전용, 읽기 전용 커서에 대해 SQLGetData를 설정합니다. SQL_SOPT_SS_CURSOR_OPTIONS가 SQL_CO_OFF로 설정되면 커서 유형이 변경되지 않습니다. 즉, 빠른 정방향 전용 커서는 빠른 정방향 전용 커서로 유지됩니다. 커서 유형을 변경하려면 응용 프로그램은 이제 SQLSetStmtAttr/SQL_ATTR_CURSOR_TYPE을 사용하여 다른 커서 유형을 설정해야 합니다. |
SQL_CO_FFO |
빠른 정방향 전용, 읽기 전용 커서를 설정하고 정방향 전용, 읽기 전용 커서에 대해 SQLGetData를 해제합니다. |
SQL_CO_AF |
임의의 커서 유형에 대해 자동 인출 옵션을 설정합니다. 문 핸들에 이 옵션이 설정되면 SQLExecute 또는 SQLExecDirect가 암시적인 SQLFetchScroll(SQL_FIRST)을 생성합니다. 커서가 열리고 서버에 대한 단일 왕복에서 행의 첫 번째 일괄 처리가 반환됩니다. |
SQL_CO_FFO_AF |
빠른 정방향 전용 커서에 대해 자동 인출 옵션을 설정합니다. 이는 SQL_CO_AF 및 SQL_CO_FFO를 모두 지정한 것과 같습니다. |
이러한 옵션이 설정된 경우 서버는 마지막 행이 인출되면 자동으로 커서를 닫습니다. 응용 프로그램은 계속 SQLFreeStmt(SQL_CLOSE) 또는 SQLCloseCursor를 호출해야 하지만 드라이버는 서버에 닫기 알림을 보내지 않아도 됩니다.
선택 목록에 text, ntext 또는 image 열이 포함된 경우 빠른 정방향 전용 커서는 동적 커서로 변환되며 SQLGetData가 허용됩니다.
SQL_SOPT_SS_DEFER_PREPARE
SQL_SOPT_SS_DEFER_PREPARE 특성은 문이 즉시 준비되는지 아니면 SQLExecute, SQLDescribeCol 또는 SQLDescribeParam이 실행될 때까지 지연되는지 결정합니다. SQL Server 7.0 및 이전 버전에서는 이 속성이 무시됩니다(준비 지연이 지원되지 않음). ValuePtr 값은 SQLLEN 유형입니다.
ValuePtr 값 |
설명 |
---|---|
SQL_DP_ON |
기본값입니다. SQLPrepare 함수를 호출하면 SQLExecute가 호출되거나 메타 속성 작업(SQLDescribeCol 또는 SQLDescribeParam)이 실행될 때까지 문 준비가 지연됩니다. |
SQL_DP_OFF |
SQLPrepare가 실행되면 즉시 문이 준비됩니다. |
SQL_SOPT_SS_REGIONALIZE
SQL_SOPT_SS_REGIONALIZE 특성은 명령 수준에서 데이터 변환을 결정하는 데 사용됩니다. 이 특성은 드라이버가 날짜, 시간 및 통화 값을 문자열로 변환할 때 클라이언트 로캘 설정을 준수하도록 합니다. SQL Server 네이티브 데이터 형식에서 문자열로의 변환만 해당됩니다.
ValuePtr 값은 SQLLEN 유형입니다.
ValuePtr 값 |
설명 |
---|---|
SQL_RE_OFF |
기본값입니다. 드라이버가 날짜, 시간 및 통화 데이터를 문자열 데이터로 변환할 때 클라이언트 로캘 설정을 사용하지 않습니다. |
SQL_RE_ON |
드라이버가 날짜, 시간 및 통화 데이터를 문자열 데이터로 변환할 때 클라이언트 로캘 설정을 사용합니다. |
국가별 변환 설정이 통화, 숫자, 날짜 및 시간 데이터 형식에 적용됩니다. 변환 설정은 통화, 숫자, 날짜 또는 시간 값을 문자열로 변환한 경우 출력 변환에만 적용할 수 있습니다.
[!참고]
문 옵션 SQL_SOPT_SS_REGIONALIZE가 사용되면 드라이버는 현재 사용자의 로캘 레지스트리 설정을 사용합니다. 응용 프로그램이 SetThreadLocale을 호출하는 등의 방식으로 이를 설정하는 경우 드라이버는 현재 스레드의 로캘을 인식하지 못합니다.
데이터 원본의 국가별 동작을 변경하면 응용 프로그램에서 오류가 발생할 수 있습니다. 날짜 문자열을 구문 분석하며 날짜 문자열이 ODBC에 정의된 대로 표시될 것으로 예상하는 응용 프로그램에서 이 값을 변경하면 부정적인 영향을 줄 수 있습니다.
SQL_SOPT_SS_TEXTPTR_LOGGING
SQL_SOPT_SS_TEXTPTR_LOGGING 특성은 text 또는 image 데이터를 포함하는 열에 대한 작업 로깅을 설정/해제합니다. ValuePtr 값은 SQLLEN 유형입니다.
ValuePtr 값 |
설명 |
---|---|
SQL_TL_OFF |
text 및 image 데이터에 대해 수행되는 작업 로깅을 해제합니다. |
SQL_TL_ON |
기본값입니다. text 및 image 데이터에 대해 수행되는 작업 로깅을 설정합니다. |
SQL_SOPT_SS_HIDDEN_COLUMNS
SQL_SOPT_SS_HIDDEN_COLUMNS 특성은 결과 집합에서 SQL Server SELECT FOR BROWSE 문의 숨겨진 열을 노출합니다. 드라이버는 기본적으로 이러한 열을 노출하지 않습니다. ValuePtr 값은 SQLLEN 형식입니다.
ValuePtr 값 |
설명 |
---|---|
SQL_HC_OFF |
기본값입니다. 결과 집합에서 FOR BROWSE 열을 숨깁니다. |
SQL_HC_ON |
FOR BROWSE 열을 공개합니다. |
SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT
SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT 특성은 쿼리 알림 요청에 대한 메시지 텍스트를 반환합니다.
SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS
SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS 특성은 쿼리 알림 요청에 사용되는 옵션을 지정합니다. 이러한 옵션은 아래에 지정된 것처럼 name=value 구문이 포함된 문자열로 지정됩니다. 응용 프로그램은 서비스를 만들고 큐에서 알림을 읽어야 합니다.
쿼리 알림 옵션 문자열의 구문은 다음과 같습니다.
service=<service-name>[;(local database=<database>|broker instance=<broker instance>)]
예를 들면 다음과 같습니다.
service=mySSBService;local database=mydb
SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT
SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT 특성은 쿼리 알림을 활성 상태로 유지할 초를 지정합니다. 기본값은 432000초(5일)입니다. ValuePtr 값은 SQLLEN 유형입니다.
SQL_SOPT_SS_PARAM_FOCUS
SQL_SOPT_SS_PARAM_FOCUS 특성은 후속 SQLBindParameter, SQLGetDescField, SQLSetDescField, SQLGetDescRec 및 SQLSetDescRec 호출의 포커스를 지정합니다.
SQL_SOPT_SS_PARAM_FOCUS의 형식은 SQLULEN입니다.
기본값은 0이며 이는 이러한 호출이 SQL 문의 매개 변수 표식에 해당하는 매개 변수의 주소를 지정한다는 의미입니다. 테이블 반환 매개 변수의 매개 변수 번호로 설정하면 이러한 호출이 해당 테이블 반환 매개 변수 열의 주소를 지정합니다. 테이블 반환 매개 변수의 매개 변수 번호가 아닌 값으로 설정하면 해당 호출에서 IM020 오류 "매개 변수 포커스가 테이블 반환 매개 변수를 참조하지 않습니다"를 반환합니다.
SQL_SOPT_SS_NAME_SCOPE
SQL_SOPT_SS_NAME_SCOPE 특성은 후속 카탈로그 함수 호출의 이름 범위를 지정합니다. SQLColumns에서 반환하는 결과 집합은 SQL_SOPT_SS_NAME_SCOPE의 설정에 따라 다릅니다.
SQL_SOPT_SS_NAME_SCOPE의 형식은 SQLULEN입니다.
ValuePtr 값 |
설명 |
---|---|
SQL_SS_NAME_SCOPE_TABLE |
기본값입니다. 테이블 반환 매개 변수를 사용할 때 실제 테이블의 메타데이터가 반환되도록 지정합니다. 스파스 열 기능을 사용할 때 SQLColumns는 스파스 column_set의 멤버가 아닌 열만 반환합니다. |
SQL_SS_NAME_SCOPE_TABLE_TYPE |
응용 프로그램이 실제 테이블이 아니라 테이블 형식의 메타데이터를 요구한다는 것을 나타냅니다. 카탈로그 함수가 테이블 형식의 메타데이터를 반환해야 합니다. 그러면 응용 프로그램이 테이블 반환 매개 변수의 TYPE_NAME을 TableName 매개 변수로 전달합니다. |
SQL_SS_NAME_SCOPE_EXTENDED |
스파스 열 기능을 사용할 때 SQLColumns는 column_set 멤버 자격에 관계없이 모든 열을 반환합니다. |
SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET |
스파스 열 기능을 사용할 때 SQLColumns는 스파스 column_set의 멤버인 열만 반환합니다. |
SQL_SS_NAME_SCOPE_DEFAULT |
SQL_SS_NAME_SCOPE_TABLE과 같습니다. |
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를 호출하면 실패합니다.
SQL_SOPT_SS_NAME_SCOPE를 잘못된 값으로 설정하려고 하면 SQL_ERROR가 반환되고 SQLSTATE HY024 및 "잘못된 특성 값입니다" 메시지가 표시되며 진단 레코드가 생성됩니다.
SQL_SOPT_SS_NAME_SCOPE 값이 SQL_SS_NAME_SCOPE_TABLE이 아닐 때 SQLTables, SQLColumns 또는 SQLPrimaryKeys 외의 카탈로그 함수가 호출되면 SQL_ERROR가 반환됩니다. SQLSTATE HY010 및 "함수 시퀀스 오류입니다(SQL_SOPT_SS_NAME_SCOPE가 SQL_SS_NAME_SCOPE_TABLE로 설정되지 않았습니다)" 메시지가 표시되고 진단 레코드가 생성됩니다.