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);