SQLExecDirect 함수

규칙
버전 소개: ODBC 1.0 표준 준수: ISO 92

요약
SQLExecDirect 는 문에 매개 변수가 있는 경우 매개 변수 표식 변수의 현재 값을 사용하여 준비 가능한 문을 실행합니다. SQLExecDirect 는 일회성 실행을 위해 SQL 문을 제출하는 가장 빠른 방법입니다.

구문

  
SQLRETURN SQLExecDirect(  
     SQLHSTMT     StatementHandle,  
     SQLCHAR *    StatementText,  
     SQLINTEGER   TextLength);  

인수

StatementHandle
[입력] 문 핸들입니다.

StatementText
[입력] 실행할 SQL 문입니다.

TextLength
[입력] *StatementText 문자의 길이입니다.

반품

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NEED_DATA, SQL_STILL_EXECUTING, SQL_ERROR, SQL_NO_DATA, SQL_INVALID_HANDLE 또는 SQL_PARAM_DATA_AVAILABLE.

진단

SQLExecDirect가 SQL_ERROR 또는 SQL_SUCCESS_WITH_INFO 반환하는 경우 SQL_HANDLE_STMT HandleTypeHandle of StatementHandle을 사용하여 SQLGetDiagRec 를 호출하여 관련 SQLSTATE 값을 가져올 수 있습니다. 다음 표에서는 SQLExecDirect에서 일반적으로 반환되는 SQLSTATE 값을 나열하고 이 함수의 컨텍스트에서 각 값을 설명합니다. 표기법 "(DM)"은 드라이버 관리자가 반환한 SQLSTATE에 대한 설명 앞에 나와 있습니다. 달리 명시되지 않는 한 각 SQLSTATE 값과 연결된 반환 코드는 SQL_ERROR.

SQLSTATE Error 설명
01000 일반 경고 드라이버 관련 정보 메시지입니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
01001 커서 작업 충돌 *StatementText 에는 위치가 지정된 업데이트 또는 삭제 문이 포함되어 있으며 행 또는 둘 이상의 행이 업데이트되거나 삭제되지 않았습니다. (둘 이상의 행에 대한 업데이트에 대한 자세한 내용은 SQL_ATTR_SIMULATE_CURSOR 설명 참조하세요.SQLSetStmtAttr의 특성입니다.)

함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
01003 set 함수에서 NULL 값 제거 StatementText 인수에는 SET 함수(예: AVG, MAX, MIN 등)가 포함되어 있지만 COUNT 집합 함수는 포함되지 않았으며 함수가 적용되기 전에 NULL 인수 값이 제거되었습니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
01004 문자열 데이터, 오른쪽 잘림 입력/출력 또는 출력 매개 변수에 대해 반환된 문자열 또는 이진 데이터는 비블랭크 문자 또는 NULL이 아닌 이진 데이터의 잘림을 초래했습니다. 문자열 값인 경우 오른쪽에서 잘렸습니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
01006 권한이 취소되지 않음 *StatementTextREVOKE 문이 포함되어 있으며 사용자에게 지정된 권한이 없습니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
01007 권한이 부여되지 않음 *StatementTextGRANT 문이며 사용자에게 지정된 권한을 부여할 수 없습니다.
01S02 옵션 값이 변경됨 구현 작업 조건으로 인해 지정된 문 특성이 잘못되었으므로 비슷한 값이 일시적으로 대체되었습니다. (SQLGetStmtAttr 을 호출하여 일시적으로 대체된 값이 무엇인지 확인할 수 있습니다.) 대용량 값은 커서가 닫히고 문 특성이 이전 값으로 되돌아갈 때까지 StatementHandle 에 유효합니다. 변경할 수 있는 문 특성은 다음과 같습니다.

SQL_ ATTR_CONCURRENCY SQL_ ATTR_CURSOR_TYPE SQL_ ATTR_KEYSET_SIZE SQL_ ATTR_MAX_LENGTH SQL_ ATTR_MAX_ROWS SQL_ ATTR_QUERY_TIMEOUT SQL_ ATTR_SIMULATE_CURSOR

함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
01S07 분수 잘림 입력/출력 또는 출력 매개 변수에 대해 반환된 데이터는 숫자 데이터 형식의 소수 부분이 잘리거나 시간, 타임스탬프 또는 간격 데이터 형식의 시간 구성 요소의 소수 부분이 잘리도록 잘렸습니다.

함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
07002 COUNT 필드가 잘못되었습니다. SQLBindParameter지정된 매개 변수 수가 *StatementText에 포함된 SQL 문의 매개 변수 수보다 적습니다.

SQLBindParameter는 parameterValuePtr이 null 포인터로 설정되고 SQL_NULL_DATA또는 SQL_DATA_AT_EXEC 설정되지 StrLen_or_IndPtr, InputOutputType이 SQL_PARAM_OUTPUT 설정되지 않아 SQLBindParameter지정된 매개 변수 수가 *StatementText에 포함된 SQL 문의 매개 변수 수보다 큽니다.
07006 제한된 데이터 형식 특성 위반 바인딩된 매개 변수에 대한 SQLBindParameterValueType 인수로 식별된 데이터 값을 SQLBindParameterParameterType 인수로 식별된 데이터 형식으로 변환할 수 없습니다.

SQL_PARAM_INPUT_OUTPUT 또는 SQL_PARAM_OUTPUT 바인딩된 매개 변수에 대해 반환된 데이터 값을 SQLBindParameter의 ValueType 인수로 식별된 데이터 형식으로 변환할 수 없습니다.

하나 이상의 행에 대한 데이터 값을 변환할 수 없지만 하나 이상의 행이 성공적으로 반환된 경우 이 함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
07007 제한된 매개 변수 값 위반 SQL_PARAM_INPUT_OUTPUT_STREAM 매개 변수 형식은 파트에서 데이터를 보내고 받는 매개 변수에만 사용됩니다. 이 매개 변수 형식에는 입력 바인딩된 버퍼가 허용되지 않습니다.

이 오류는 매개 변수 형식이 SQL_PARAM_INPUT_OUTPUT SQLBindParameter지정된 *StrLen_or_IndPtr SQL_NULL_DATA, SQL_DEFAULT_PARAM, SQL_LEN_DATA_AT_EXEC(len) 또는 SQL_DATA_AT_EXEC 같지 않은 경우에 발생합니다.
07S01 기본 매개 변수를 잘못 사용했습니다. SQLBindParameter설정된 매개 변수 값이 SQL_DEFAULT_PARAM 해당 매개 변수에 기본값이 없습니다.
08S01 통신 링크 실패 드라이버와 드라이버가 연결된 데이터 원본 간의 통신 링크는 함수가 처리를 완료하기 전에 실패했습니다.
21S01 값 삽입 목록이 열 목록과 일치하지 않음 *StatementText 에는 INSERT 문이 포함되어 있으며 삽입할 값 수가 파생 테이블의 정도와 일치하지 않습니다.
21S02 파생 테이블의 정도가 열 목록과 일치하지 않음 *StatementText에는 CREATE VIEW 문이 포함되어 있으며 정규화되지 않은 열 목록(SQL 문의 열 식별자 인수에서 뷰에 지정된 열 수)에는 SQL 문의 쿼리 사양 인수로 정의된 파생 테이블의 열 수보다 많은 이름이 포함되었습니다.
22001 문자열 데이터, 오른쪽 잘림 열에 문자 또는 이진 값을 할당하면 비블랭크 문자 데이터 또는 null이 아닌 이진 데이터가 잘리게 됩니다.
22002 표시기 변수가 필요하지만 제공되지 않음 NULL 데이터는 SQLBindParameter에서 설정한 StrLen_or_IndPtr null 포인터인 출력 매개 변수바인딩되었습니다.
22003 숫자 값이 범위를 벗어났습니다. *StatementText 에는 바인딩된 숫자 매개 변수 또는 리터럴이 포함된 SQL 문이 포함되어 있으며, 이 값으로 인해 연결된 테이블 열에 할당될 때 숫자의 전체 부분(소수점이 아닌)이 잘렸습니다.

하나 이상의 입력/출력 또는 출력 매개 변수에 대해 숫자 값(숫자 또는 문자열)을 반환하면 숫자의 전체 부분(소수 부분이 아닌)이 잘렸을 것입니다.
22007 날짜/시간 형식이 잘못되었습니다. *StatementText 에는 날짜, 시간 또는 타임스탬프 구조가 바인딩된 매개 변수로 포함된 SQL 문이 포함되어 있으며 매개 변수는 각각 잘못된 날짜, 시간 또는 타임스탬프였습니다.

입력/출력 또는 출력 매개 변수가 날짜, 시간 또는 타임스탬프 C 구조에 바인딩되었고 반환된 매개 변수의 값은 각각 잘못된 날짜, 시간 또는 타임스탬프였습니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
22008 날짜/시간 필드 오버플로 *StatementText 에는 계산 시 날짜, 시간 또는 타임스탬프 구조가 유효하지 않은 datetime 식이 포함된 SQL 문이 포함되어 있습니다.

입력/출력 또는 출력 매개 변수에 대해 계산된 datetime 식으로 인해 날짜, 시간 또는 타임스탬프 C 구조가 잘못되었습니다.
22012 0으로 나누기 *StatementText 에는 나누기를 0으로 발생시킨 산술 식이 포함된 SQL 문이 포함되어 있습니다.

입력/출력 또는 출력 매개 변수에 대해 계산된 산술 식으로 인해 나누기가 0으로 생성되었습니다.
22015 간격 필드 오버플로 *StatementText 에는 정확한 숫자 또는 간격 매개 변수가 포함되어 있습니다. 이 매개 변수는 간격 SQL 데이터 형식으로 변환될 때 상당한 자릿수의 손실을 초래했습니다.

*StatementText 에는 열의 숫자 데이터 형식으로 변환할 때 숫자 데이터 형식에 표현이 없는 둘 이상의 필드가 있는 간격 매개 변수가 포함되어 있습니다.

*StatementText 에는 간격 SQL 형식에 할당된 매개 변수 데이터가 포함되어 있으며 간격 SQL 형식에 C 형식의 값 표현이 없습니다.

정확한 숫자 또는 간격 SQL 형식인 입력/출력 또는 출력 매개 변수를 간격 C 형식에 할당하면 상당한 자릿수가 손실되었습니다.

입력/출력 또는 출력 매개 변수가 간격 C 구조에 할당된 경우 간격 데이터 구조에 데이터의 표현이 없었습니다.
22018 캐스트 사양에 잘못된 문자 값 *StatementText 에는 정확하거나 근사적인 숫자, 날짜/시간 또는 간격 데이터 형식인 C 형식이 포함되어 있습니다. 열의 SQL 형식은 문자 데이터 형식이고 열의 값은 바인딩된 C 형식의 유효한 리터럴이 아니었습니다.

입력/출력 또는 출력 매개 변수가 반환되었을 때 SQL 형식은 정확하거나 근사적인 숫자, 날짜/시간 또는 간격 데이터 형식이었습니다. C 형식이 SQL_C_CHAR; 열의 값이 바인딩된 SQL 형식의 유효한 리터럴이 아니었습니다.
22019 잘못된 이스케이프 문자 *StatementText에는 WHERE 절에 ESCAPE 가 있는 LIKE 조건자가 포함된 SQL 문이 포함되어 있으며 ESCAPE 다음에 있는 이스케이프 문자의 길이가 1과 같지 않습니다.
22025 잘못된 이스케이프 시퀀스 *StatementText에는 WHERE 절에 "LIKE패턴 값ESCAPE 이스케이프문자"가 포함된 SQL 문이 포함되어 있으며 패턴 값의 이스케이프 문자 다음에 있는 문자는 "%" 또는 "_" 중 하나가 아닙니다.
23000 무결성 제약 조건 위반 *StatementText 에는 매개 변수 또는 리터럴이 포함된 SQL 문이 포함되어 있습니다. 매개 변수 값은 연결된 테이블 열에서 NOT NULL로 정의된 열의 경우 NULL이거나, 고유 값만 포함하도록 제한된 열에 대해 중복 값이 제공되었거나, 다른 무결성 제약 조건이 위반되었습니다.
24000 커서 상태가 잘못되었습니다. SQLFetch 또는 SQLFetchScroll의해 StatementHandle커서가 배치되었습니다. 이 오류는 SQLFetch 또는 SQLFetchScroll이 SQL_NO_DATA 반환하지 않은 경우 드라이버 관리자가 반환하며, SQLFetch 또는 SQLFetchScroll이 SQL_NO_DATA 반환한 경우 드라이버에서 반환합니다.

커서가 열려 있지만 StatementHandle배치되지 않았습니다.

*StatementText 에는 위치가 지정된 update 또는 delete 문이 포함되어 있으며 커서는 결과 집합의 시작 전이나 결과 집합의 끝 뒤에 배치되었습니다.
34000 커서 이름이 잘못되었습니다. *StatementText 에는 위치가 지정된 update 또는 delete 문이 포함되어 있으며 실행 중인 문에서 참조하는 커서가 열려 있지 않았습니다.
3D000 카탈로그 이름이 잘못되었습니다. StatementText지정된 카탈로그 이름이 잘못되었습니다.
3F000 잘못된 스키마 이름 StatementText지정된 스키마 이름이 잘못되었습니다.
40001 Serialization 실패 다른 트랜잭션과의 리소스 교착 상태 때문에 트랜잭션이 롤백되었습니다.
40003 문 완성을 알 수 없음 이 함수를 실행하는 동안 연결된 연결이 실패했으며 트랜잭션 상태를 확인할 수 없습니다.
42000 구문 오류 또는 액세스 위반 *StatementText 에는 준비할 수 없거나 구문 오류가 포함된 SQL 문이 포함되어 있습니다.

사용자에게 *StatementText에 포함된 SQL 문을 실행할 수 있는 권한이 없습니다.
42S01 기본 테이블 또는 뷰가 이미 있음 *StatementText 에는 CREATE TABLE 또는 CREATE VIEW 문이 포함되어 있으며 지정된 테이블 이름 또는 뷰 이름이 이미 있습니다.
42S02 기본 테이블 또는 뷰를 찾을 수 없음 *StatementText 에는 DROP TABLE 또는 DROP VIEW 문이 포함되어 있으며 지정된 테이블 이름 또는 뷰 이름이 없습니다.

*StatementTextALTER TABLE 문이 포함되어 있으며 지정된 테이블 이름이 없습니다.

*StatementText 에는 CREATE VIEW 문이 포함되어 있으며 쿼리 사양에 정의된 테이블 이름 또는 뷰 이름이 없습니다.

*StatementTextCREATE INDEX 문이 포함되어 있으며 지정된 테이블 이름이 없습니다.

*StatementTextGRANT 또는 REVOKE 문이 포함되어 있으며 지정된 테이블 이름 또는 뷰 이름이 없습니다.

*StatementTextSELECT 문이 포함되어 있고 지정된 테이블 이름 또는 뷰 이름이 없습니다.

*StatementText 에는 DELETE, INSERT 또는 UPDATE 문이 포함되어 있으며 지정된 테이블 이름이 없습니다.

*StatementText 에는 CREATE TABLE 문이 포함되어 있으며 제약 조건에 지정된 테이블(만들어지는 테이블이 아닌 다른 테이블 참조)이 없습니다.

*StatementText 에는 CREATE SCHEMA 문이 포함되어 있으며 지정된 테이블 이름 또는 뷰 이름이 없습니다.
42S11 인덱스가 이미 있음 *StatementText 에는 CREATE INDEX 문이 포함되어 있으며 지정된 인덱스 이름이 이미 있습니다.

*StatementText 에는 CREATE SCHEMA 문이 포함되어 있으며 지정된 인덱스 이름이 이미 있습니다.
42S12 인덱스 찾을 수 없음 *StatementTextDROP INDEX 문이 포함되어 있고 지정된 인덱스 이름이 없습니다.
42S21 열이 이미 있음 *StatementText에는 ALTER TABLE 문이 포함되어 있으며 ADD 절에 지정된 열이 고유하지 않거나 기본 테이블의 기존 열을 식별합니다.
42S22 열을 찾을 수 없음 *StatementText 에는 CREATE INDEX 문이 포함되어 있으며 열 목록에 지정된 열 이름 중 하나 이상이 없습니다.

*StatementTextGRANT 또는 REVOKE 문이 포함되어 있으며 지정된 열 이름이 없습니다.

*StatementTextSELECT, DELETE, INSERT 또는 UPDATE 문이 포함되어 있으며 지정된 열 이름이 없습니다.

*StatementText 에는 CREATE TABLE 문이 포함되어 있으며 제약 조건에 지정된 열(생성되는 테이블 이외의 테이블 참조)이 없습니다.

*StatementTextCREATE SCHEMA 문이 포함되어 있고 지정된 열 이름이 없습니다.
44000 WITH CHECK OPTION 위반 StatementText 인수에는 INSERT 문의 영향을 받는 하나 이상의 행이 더 이상 보기 테이블에 존재하지 않도록 WITH CHECK OPTION을 지정하여 만든 뷰된 테이블에서 파생된 테이블 또는 뷰된 테이블에서 수행되는 INSERT 문이 포함되어 있습니다.

StatementText 인수에는 UPDATE 문의 영향을 받는 하나 이상의 행이 더 이상 보기 테이블에 존재하지 않도록 WITH CHECK OPTION을 지정하여 만든 뷰된 테이블에서 파생된 테이블 또는 뷰된 테이블에서 수행되는 UPDATE 문이 포함되어 있습니다.
HY000 일반 오류 특정 SQLSTATE가 없고 구현별 SQLSTATE가 정의되지 않은 오류가 발생했습니다. *MessageText 버퍼의 SQLGetDiagRec에서 반환된 오류 메시지는 오류와 그 원인을 설명합니다.
HY001 메모리 할당 오류 드라이버가 함수 실행 또는 완료를 지원하는 데 필요한 메모리를 할당할 수 없습니다.
HY008 작업이 취소됨 StatementHandle에 대해 비동기 처리를 사용하도록 설정했습니다. 함수가 호출되었고 실행이 완료되기 전에 StatementHandle에서 SQLCancel 또는 SQLCancelHandle호출되었습니다. 그런 다음 StatementHandle에서 함수가 다시 호출되었습니다.

함수가 호출되었고 실행을 완료하기 전에 다중 스레드 애플리케이션의 다른 스레드에서 StatementHandle에서 SQLCancel 또는 SQLCancelHandle이 호출되었습니다.
HY009 null 포인터를 잘못 사용했습니다. (DM) *StatementText 가 null 포인터였습니다.
HY010 함수 시퀀스 오류 (DM) StatementHandle과 연결된 연결 핸들에 대해 비동기적으로 실행되는 함수가 호출되었습니다. 이 비동기 함수는 SQLExecDirect 함수가 호출되었을 때 계속 실행되었습니다.

(DM) SQLExecute, SQLExecDirect 또는 SQLMoreResults가 StatementHandle에 대해 호출되고 SQL_PARAM_DATA_AVAILABLE 반환되었습니다. 이 함수는 모든 스트리밍된 매개 변수에 대해 데이터를 검색하기 전에 호출되었습니다.

(DM) 이 함수가 아닌 비동기 실행 함수가 StatementHandle에 대해 호출되었고 이 함수가 호출되었을 때 계속 실행되고 있었습니다.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations 또는 SQLSetPos가 StatementHandle에 대해 호출되고 SQL_NEED_DATA 반환되었습니다. 이 함수는 모든 실행 시 데이터 매개 변수 또는 열에 대한 데이터를 보내기 전에 호출되었습니다.
HY013 메모리 관리 오류 메모리 조건이 낮기 때문에 기본 메모리 개체에 액세스할 수 없기 때문에 함수 호출을 처리할 수 없습니다.
HY090 잘못된 문자열 또는 버퍼 길이 (DM) TextLength 인수가 0보다 작거나 같지만 SQL_NTS 같지 않았습니다.

SQLBindParameter설정된 매개 변수 값은 null 포인터였으며 매개 변수 길이 값은 0, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM 또는 SQL_LEN_DATA_AT_EXEC_OFFSET 보다 작거나 같지 않았습니다.

SQLBindParameter설정된 매개 변수 값은 null 포인터가 아니었습니다. C 데이터 형식이 SQL_C_BINARY 또는 SQL_C_CHAR; 매개 변수 길이 값이 0보다 작지만 SQL_NTS, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM 또는 SQL_LEN_DATA_AT_EXEC_OFFSET 작거나 같지 않았습니다.

SQLBindParameter에 의해 바인딩된 매개 변수 길이 값이 SQL_DATA_AT_EXEC 설정되었습니다. SQL 형식은 SQL_LONGVARCHAR, SQL_LONGVARBINARY 또는 긴 데이터 원본별 데이터 형식이고 SQLGetInfo의 SQL_NEED_LONG_DATA_LEN 정보 형식은 "Y"였습니다.
HY105 잘못된 매개 변수 형식 SQLBindParameter의 InputOutputType 인수대해 지정된 값이 SQL_PARAM_OUTPUT 매개 변수가 입력 매개 변수였습니다.
HY109 커서 위치가 잘못되었습니다. *StatementText에는 위치가 지정된 update 또는 delete 문이 포함되어 있으며 삭제되었거나 가져올 수 없는 행에 커서가 배치되었습니다(SQLSetPos 또는 SQLFetchScroll에 의해).
HY117 알 수 없는 트랜잭션 상태로 인해 연결이 일시 중단됩니다. 연결 끊기 및 읽기 전용 함수만 허용됩니다. (DM) 일시 중단 상태에 대한 자세한 내용은 SQLEndTran 함수를 참조 하세요.
HYC00 선택적 기능이 구현되지 않음 SQL_ATTR_CONCURRENCY 및 SQL_ATTR_CURSOR_TYPE 문 특성의 현재 설정 조합은 드라이버 또는 데이터 원본에서 지원되지 않았습니다.

SQL_ATTR_USE_BOOKMARKS 문 특성이 SQL_UB_VARIABLE 설정되었으며 SQL_ATTR_CURSOR_TYPE 문 특성은 드라이버가 책갈피를 지원하지 않는 커서 유형으로 설정되었습니다.
HYT00 시간 제한 만료됨 데이터 원본이 결과 집합을 반환하기 전에 쿼리 제한 시간이 만료되었습니다. 시간 제한 기간은 SQL_ATTR_QUERY_TIMEOUT SQLSetStmtAttr를 통해 설정됩니다.
HYT01 연결 제한 시간이 만료됨 데이터 원본이 요청에 응답하기 전에 연결 제한 시간이 만료되었습니다. 연결 제한 시간은 SQL_ATTR_CONNECTION_TIMEOUT SQLSetConnectAttr를 통해 설정됩니다.
IM001 드라이버는 이 함수를 지원하지 않습니다. (DM) StatementHandle연결된 드라이버는 함수를 지원하지 않습니다.
IM017 비동기 알림 모드에서 폴링을 사용할 수 없습니다. 알림 모델을 사용할 때마다 폴링이 비활성화됩니다.
IM018 이 핸들에서 이전 비동기 작업을 완료하기 위해 SQLCompleteAsync 가 호출되지 않았습니다. 핸들의 이전 함수 호출이 SQL_STILL_EXECUTING 반환하고 알림 모드가 활성화된 경우 사후 처리를 수행하고 작업을 완료하려면 핸들에서 SQLCompleteAsync 를 호출해야 합니다.

주석

애플리케이션은 SQLExecDirect를 호출하여 데이터 원본에 SQL 문을 보냅니다. 직접 실행에 대한 자세한 내용은 직접 실행을 참조하세요. 드라이버는 데이터 원본에서 사용하는 SQL 형식을 사용하도록 문을 수정한 다음 데이터 원본에 제출합니다. 특히 드라이버는 SQL에서 특정 기능을 정의하는 데 사용되는 이스케이프 시퀀스를 수정합니다. 이스케이프 시퀀스의 구문은 ODBC의 이스케이프 시퀀스를 참조하세요.

애플리케이션은 SQL 문에 하나 이상의 매개 변수 마커를 포함할 수 있습니다. 매개 변수 표식을 포함하기 위해 애플리케이션은 적절한 위치에 있는 SQL 문에 물음표(?)를 포함합니다. 매개 변수에 대한 자세한 내용은 문 매개 변수를 참조 하세요.

SQL 문이 SELECT 문이고 애플리케이션이 SQLSetCursorName을 호출하여 커서를 문과 연결하는 경우 드라이버는 지정된 커서를 사용합니다. 그렇지 않으면 드라이버가 커서 이름을 생성합니다.

데이터 원본이 수동 커밋 모드(명시적 트랜잭션 시작 필요)에 있고 트랜잭션이 아직 시작되지 않은 경우 드라이버는 SQL 문을 보내기 전에 트랜잭션을 시작합니다. 자세한 내용은 수동 커밋 모드를 참조 하세요.

애플리케이션이 SQLExecDirect사용하여 COMMIT 또는 ROLLBACK 문을 제출하는 경우 DBMS 제품 간에 상호 운용할 수 없습니다. 트랜잭션을 커밋하거나 롤백하기 위해 애플리케이션은 SQLEndTran을 호출합니다.

SQLExecDirect에서 실행 시 데이터 매개 변수가 발견되면 SQL_NEED_DATA 반환합니다. 애플리케이션은 SQLParamData 및 SQLPutData를 사용하여 데이터를 보냅니다. SQLBindParameter, SQLParamData, SQLPutData긴 데이터 보내기를 참조하세요.

SQLExecDirect에서 데이터 원본의 행에 영향을 주지 않는 검색된 업데이트, 삽입 또는 삭제 문을 실행하는 경우 SQLExecDirect 호출은 SQL_NO_DATA 반환합니다.

SQL_ATTR_PARAMSET_SIZE 문 특성 값이 1보다 크고 SQL 문에 매개 변수 표식이 하나 이상 있는 경우 SQLExecDirect는 SQLBindParameter 호출에서 ParameterValuePointer 인수가 가리키는 배열의 각 매개 변수 값 집합에 대해 SQL 문을 한 번 실행합니다. 자세한 내용은 매개 변수 값 배열을 참조 하세요.

책갈피가 켜져 있고 책갈피를 지원할 수 없는 쿼리가 실행되는 경우 드라이버는 특성 값을 변경하고 SQLSTATE 01S02(옵션 값이 변경됨)를 반환하여 환경을 책갈피를 지원하는 환경으로 강제 변환하려고 시도해야 합니다. 특성을 변경할 수 없는 경우 드라이버는 SQLSTATE HY024(잘못된 특성 값)를 반환해야 합니다.

참고 항목

연결 풀링을 사용하는 경우 애플리케이션은 데이터 원본에서 사용하는 카탈로그를 변경하는 SQL Server의 USE데이터베이스 문과 같이 데이터베이스 또는 데이터베이스의 컨텍스트를 변경하는 SQL 문을 실행해서는 안 됩니다.

코드 예

SQLBindCol, SQLGetData샘플 ODBC 프로그램을 참조하세요.

추가 정보 참조
결과 집합의 열에 버퍼 바인딩 SQLBindCol 함수
문 처리 취소 SQLCancel 함수
커밋 또는 롤백 작업 실행 SQLEndTran 함수
준비된 SQL 문 실행 SQLExecute 함수
여러 행의 데이터 가져오기 SQLFetch 함수
데이터 블록을 가져오거나 결과 집합을 스크롤합니다. SQLFetchScroll 함수
커서 이름 반환 SQLGetCursorName 함수
데이터 열의 일부 또는 전체 가져오기 SQLGetData 함수
다음 매개 변수를 반환하여 에 대한 데이터를 보냅니다. SQLParamData 함수
실행을 위한 문 준비 SQLPrepare 함수
실행 시 매개 변수 데이터 보내기 SQLPutData 함수
커서 이름 설정 SQLSetCursorName 함수
문 특성 설정 SQLSetStmtAttr 함수

참고 항목

ODBC API 참조
ODBC 헤더 파일