콘텐츠로 이동

SQLNativeSql

SQLNativeSql#

SQL 구문을 Altibase CLI 드라이버가 지원하는 문장으로 변환한다.

Unicode SQLNativeSqlW() 동작은 SQLNativeSql()와 동일하다.

구 문#

SQLRETURN SQLNativeSql (
        SQLHDBC dbc,
        SQLCHAR *InstatementText,
        SQLINTEGER textLength,
        SQLCHAR *OutStstementText,
        SQLINTEGER bufferLength,
        SQLINTEGER textLength);

인 자#

자료유형 인자 사용 설명
SQLHDBC dbc 입력 접속 핸들
SQLCHAR * InstatementText 입력 변환하고자 하는 SQL 구문
SQLINTEGER textLength 입력 InstatementText의 길이
SQLCHAR * OutStstementText 출력 변환된 SQL 구문을 받을 버퍼의 포인터
SQLINTEGER bufferLength 입력 OutStstementText의 크기
SQLINTEGER textLength 출력 OutStstementText에 저장된 크기

결괏값#

SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_INVALID_HANDLE
SQL_ERROR

설 명#

SQL 구문을 Altibase CLI 드라이버가 지원하는 문장으로 변환시켜준다. SQLNativeSql() 실행은 하지 않는다.

ALTIBASE는 다음과 같은 구문들을 지원한다.

  • {d, '1981-09-27'} → TO_DATE('1981-09-27', 'YYYY-MM-DD')

  • {t, '07:23:56'} → TO_DATE('07:23:56', 'HH:MI:SS')

  • {ts, '1981-09-27 07:23:56'} → TO_DATE('1981-09-27 07:23:56', 'YYYY-MM-DD HH:MI:SS')

  • {? = call PROC1(a, ?, c)} → EXECUTE ? := PROC1(a, ? ,c)

진 단#

SQLSTATE 설명 부연설명
HY000 일반 오류 명시적인 오류 발생 없음
HY001 메모리 할당 오류 명시된 핸들을 위한 메모리 할당에 실패
01004 자료가 잘림 OutStstementText 버퍼의 크기가 반환될 데이터의 크기보다 작음

예 제#

SQLNativeSql(  dbc, 
               (SQLCHAR*)"INSERT INTO T1 VALUES( {d '1981-09-27'} )",
               SQL_NTS,
               outText,
               100,
               &outTextLen);
  • outText에 INSERT INTO T1 VALUES( TO_DATE('1981-09-27', 'YYYY-MM-DD'))가 저장된다.