콘텐츠로 이동

SQLTransact

SQLTransact#

연결 상태에서 현재 트랜잭션을 정상 종료하거나 철회한다.

연결 시간 이후나 이전 SQLTransact() 호출 이후의 연결에서 수행 된 데이터베이스에 대한 모든 변경을 정상 종료하거나 철회한다.

트랜잭션이 연결 상태에서 사용 중이면 애플리케이션은 데이터베이스를 단절하기 전에 SQLTransact()를 호출해야 한다.

SQLTransact()는 SQLEndTran()으로 대체될 수 있다.

구 문#

SQLRETURN  SQLTransact (
    SQLHENV         env,
    SQLHDBC         dbc,
    SQLSMALLINT     type );

인 자#

자료유형 인자 사용 설명
SQLHENV env 입력 환경 핸들
SQLHDBC dbc 입력 연결 핸들
SQLSMALLINT type 입력 다음 두 값 중 하나.
- SQL_COMMIT
- SQL_ROLLBACK

결괏값#

SQL_SUCCESS
SQL_INVALID_HANDLE
SQL_ERROR

설 명#

트랜잭션을 SQL_COMMIT 또는 SQL_ROLLBACK으로 완료하면 다음과 같은 효과가 있다.

  • SQLTransact()를 호출한 후에도 명령문 핸들이 유효

  • 바인드된 매개변수, 열 바인딩이 트랜잭션보다 오래 살아 있다.

  • 미결 검색인 결과 집합이 삭제된다.

현재 사용 중인 트랜잭션이 없으면 SQLTransact()를 호출하는 것은 데이터베이스 서버에 아무런 영향을 끼치지 않고 SQL_SUCCESS를 반환한다.

연결 손실 때문에 COMMIT 또는 ROLLBACK을 실행하는 동안 SQLTransact()가 실패할 수 있다. 이 경우에는 애플리케이션이 반영 또는 롤백이 처리되었는지 판별할 수 없으므로 데이터베이스 관리자에게 도움을 요청한다.

예 제#

< $ALTIBASE_HOME/sample/SQLCLI/demo_tran1.cpp 참고 >

SQLTransact(SQL_NULL_HENV, dbc, SQL_COMMIT);