콘텐츠로 이동

SQLExecDirect

SQLExecDirect#

만약 SQL 문에 매개변수가 존재한다면 매개변수 마커들의 현재 값을 사용하여 주어진 SQL 문장을 직접 실행한다. SQL 문은 한 번만 실행될 수 있으며 DB로 보내는 가장 빠른 방법이다.

Unicode SQLExecDirectW() 동작은 SQLExecDirect()와 동일하다.

구 문#

SQLRETURN  SQLExecDirect (
    SQLHSTMT    stmt,
    SQLCHAR *   sql,
    SQLINTEGER  sqlLength );

인 자#

자료유형 인자 사용 설명
SQLHSTMT stmt 입력 명령문 핸들
SQLCHAR * sql 입력 실행 될 SQL 문
SQLINTEGER sqlLength 입력 *sql의 문자 개수

결괏값#

SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_NO_DATA
SQL_INVALID_HANDLE
SQL_ERROR

설 명#

SQL문 스트링에는 매개변수 마커가 포함될 수 있다. 매개변수 마커는 "?" 문자로 표시되며, SQLExecDirect()가 호출될 때 애플리케이션 변수 값이 대체되어야 할 명령문의 위치를 지정한다. SQLBindParameter()는 애플리케이션 변수를 각 매개변수 마커에 바인드(연관)시켜서, 자료가 전송될 때 자료 변환이 수행되어야 하는지를 표시한다. 모든 매개변수는 SQLExecDirect()를 호출하기 전에 바인드되어야 한다.
SQL 문이 SELECT 문일 때, 서버로부터 받은 결과 집합에서 행을 검색하려면, SQLExecDirect()가 성공적으로 리턴된 후 SQLBindCol() 에 의해 버퍼를 바인딩한 후, SQLFetch()를 호출하여서, 바인딩 된 버퍼를 참조하면 된다.

만약 SQLExecDirect()가 DB에 어떠한 행에도 영향을 끼치지 않는 update 문 또는 delete 문을 실행하면 SQLExecDirect()에 대한 호출은 SQL_NO_DATA를 반환한다. (영향을 끼친 레코드 수를 파악하기 위해 SQLRowCount()를 사용할 수 있다.)

진 단#

SQLSTATE 설명 부연설명
08003 stmt가 연결 되지 않은 상태거나 연결이 끊어진 상태
08S01 통신 장애 데이터 송수신 실패
HY000 일반 오류
HY001 메모리 할당 오류 명시된 핸들에 대한 메모리 할당 실패
HY009 유효하지 않은 인자 (null pointer) 사용 *sql이 null pointer 임

관련 함수#

SQLBindCol
SQLEndTran
SQLExecute
SQLFetch
SQLGetData
SQLPrepare
SQLStmtAttr

예 제#

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

sprintf(query,"SELECT * FROM DEMO_EX1");
if (SQLExecDirect(stmt,query, SQL_NTS) != SQL_SUCCESS)
{
   execute_err(dbc, stmt, query);
        SQLFreeStmt(stmt, SQL_DROP);
        return SQL_ERROR;
}