36.15. Informix호환성 모드

ECPG소위에서 실행할 수 있습니다Informix 호환성 모드. 이 모드가 활성화되면 마치 마치처럼 행동하려고합니다.Informix프리 컴파일러Informixe/sql. 일반적으로 말하면 이것은 대신 달러 표시를 사용할 수 있습니다.Exec SQL내장 된 SQL 명령을 소개하기위한 원시 :

$ int j = 3;
$ 연결 : dbname;
$ 작성 테이블 테스트 (I int 기본 키, j int);
$ test에 삽입 (i, j) 값 (7, : j);
$ commit;

note

사이에 공백이 없어야합니다$및 다음 전처리 지침, 즉포함, 정의, ifdef등. 그렇지 않으면, 전처리 기는 토큰을 호스트 변수로 구문 분석합니다.

두 가지 호환 모드가 있습니다.Informix, Informix_se

이 호환성 모드를 사용하는 프로그램을 연결할 때libcompatECPG와 함께 배송됩니다.

이전에 설명 된 구문 설탕 외에도Informix호환성 모드는 데이터의 입력, 출력 및 변환에 대한 일부 기능뿐만 아니라 E/SQL에서 ECPG로 알려진 임베디드 SQL 문을 포장합니다.

Informix호환성 모드는 ECPG의 pgtypeslib 라이브러리에 밀접하게 연결되어 있습니다. pgtypeslib는 SQL 데이터 유형을 C 호스트 프로그램 내의 데이터 유형에 매핑하고 대부분의 추가 기능Informix호환성 모드를 사용하면 해당 C 호스트 프로그램 유형에서 작동 할 수 있습니다. 그러나 호환성의 범위는 제한되어 있습니다. 복사하려고하지 않습니다Informix행동; 그것은 당신이 동일한 작업을 다소 수행 할 수 있으며 동일한 이름과 동일한 기본 동작을 가진 기능을 제공하지만 사용중인 경우 드롭 인 교체품이 아닙니다.Informix현재. 또한 일부 데이터 유형은 다릅니다. 예를 들어,Postgresql 'sDateTime 및 간격 유형은 예를 들어 범위에 대해 알지 못합니다연도 ~ 분따라서 ECPG에서도 지원하지 않을 것입니다.

36.15.1. 추가 유형

오른쪽 트림 문자열 데이터를 저장하기위한 Informix- 특이 적 "문자열"의사 유형은 이제 사용하지 않고 Informix-Mode에서 지원됩니다.typedef. 실제로 Informix-Mode에서 ECPG는 포함 된 소스 파일을 처리하는 것을 거부합니다.typedef somegype String;

exec SQL 시작 선언 섹션;
문자열 userID; / *이 변수에는 트림 데이터가 포함됩니다 */
Exec SQL END DELLARE SECTION;

exec SQL Mycur에 : userId;

36.15.2. 추가/누락 된 임베디드 SQL 문

닫기 데이터베이스

이 문장은 현재 연결을 닫습니다. 사실, 이것은 ECPG의 동의어입니다현재 연결 끊기:

$ 닫기 데이터베이스;                / * 현재 연결을 닫습니다 */
Exec SQL Close Database;
무료 cursor_name

ECPG가 Informix의 ESQL/C (즉, 순수한 문법 변환이며 기본 런 타임 라이브러리에 의존하는 단계)와 비교하여 ECPG의 작동 방식으로 인해무료 cursor_nameECPG의 진술. ECPG에서이기 때문입니다.커서 선언커서 이름에 사용하는 런타임 라이브러리로 함수 호출로 변환되지 않습니다. 이것은 ECPG 런타임 라이브러리에서 SQL 커서의 런타임 부기가 없음을 의미합니다.

Free Statement_name

무료 statement_name동의어입니다Deallocate Repact statement_name.

36.15.3. 정보 호환 SQLDA 디스크립터 영역

Informix 호환 모드에 설명 된 것과 다른 구조를 지원합니다섹션 36.7.2. 아래를 참조하십시오 :

struct sqlvar_compat

    짧은 sqltype;
    int sqllen;
    char *sqldata;
    짧은 *sqlind;
    char *sqlname;
    char *sqlformat;
    짧은 sqlitype;
    짧은 sqlilen;
    char *sqlidata;
    int sqlxid;
    char *sqltypename;
    짧은 sqltypelen;
    짧은 sqlownerlen;
    짧은 sqlsourceType;
    char *sqlownername;
    int sqlsourceid;
    char *sqlilongdata;
    int sqlflags;
    void *sqlreserved;
;

struct sqlda_compat

    짧은 SQLD;
    struct sqlvar_compat *sqlvar;
    char desc_name [19];
    짧은 desc_occ;
    struct sqlda_compat *desc_next;
    void *예약;
;

typedef struct sqlvar_compat sqlvar_t;
typedef struct sqlda_compat sqlda_t;

글로벌 속성은 다음과 같습니다.

SQLD

의 필드 수SQLDA디스크립터.

sqlvar

필드 당 특성에 대한 포인터.

desc_name

사용하지 않고 제로 바이트로 채워져 있습니다.

desc_occ

할당 된 구조의 크기.

desc_next

결과 세트에 둘 이상의 레코드가 포함 된 경우 다음 SQLDA 구조에 대한 포인터.

예약

미사용 포인터, NULL을 포함합니다. 정보 호환성을 위해 보관합니다.

당사자 속성은 아래에 있으며에 저장됩니다.sqlvar배열 :

SQLTYPE

필드 유형. 상수가sqltypes.h

sqllen

필드 데이터의 길이.

sqldata

필드 데이터에 대한 포인터. 포인터는char *타입, 이에 의해 지적 된 데이터는 이진 형식입니다. 예:

int intval;

스위치 (sqldata- sqlvar [i] .sqltype)

    CASE SQLINTEGER :
        intval = *(int *) sqldata- sqlvar [i] .sqldata;
        부서지다;
  ...
sqlind

널 표시기에 대한 포인터. 설명 또는 페치로 반환하면 항상 유효한 포인터입니다. 입력으로 사용 된 경우실행 ... SQLDA 사용;그런 다음 Null-Pointer 값은이 필드의 값이 Null임을 의미합니다. 그렇지 않으면 유효한 포인터 및sqlitype올바르게 설정해야합니다. 예:

if ( *(int2 *) sqldata- sqlvar [i] .sqlind! = 0)
    printf ( "값은 null \ n");
sqlname

필드 이름. 0- 종료 문자열.

sqlformat

Informix에 예약, 값pqfformat필드 용.

sqlitype

널 표시기 데이터의 유형. 서버에서 데이터를 반환 할 때 항상 SQLSMINT입니다. 때SQLDA매개 변수화 쿼리에 사용되며 데이터는 세트 유형에 따라 처리됩니다.

sqlilen

널 표시기 데이터의 길이.

SQLXID

필드의 확장 유형, 결과pqftype.

sqltypename
sqltypelen
SQLOWNERLEN
sqlsourcetype
sqlownername
sqlsourceid
sqlflags
sqlreserved

미사용.

sqlilongdata

SQLDATAifSqllen32KB보다 큽니다.

예 :

exec sql 포함 sqlda.h;

    sqlda_t *sqlda; / * 이것은 내장 선언 섹션 아래에있을 필요가 없습니다 */

    Exec SQL 시작 선언 섹션;
    char * prep_stmt = "select * from table1";
    int i;
    Exec SQL END DELLARE SECTION;

    ...

    Exec SQL 준비 mystmt : prep_stmt;

    Exec SQL MystMt를 SQLDA로 설명합니다.

    printf ( "#의# : %d \ n", sqlda- sqld);
    for (i = 0; i <sqlda- sqld; i ++)
      printf ( "필드 %d : \" %s \ "\ n", sqlda- sqlvar [i]- sqlname);

    Exec SQL Mystmt에 대한 MyCursor 커서 선언;
    Exec SQL Open MyCursor;
    exec SQL을 찾을 수 없을 때마다;

    동안 (1)

      SQLDA를 사용하여 Exec SQL Fetch MyCursor;

    Exec SQL Close MyCursor;

    자유 (SQLDA); /* 주요 구조는 모두 무료입니다 ()
                  * sqlda 및 sqlda- sqlvar는 할당 된 영역에 있습니다 */

자세한 내용은를 참조하십시오.sqlda.h헤더 및src/interfaces/ecpg/test/compat_informix/sqlda.pgc회귀 테스트.

36.15.4. 추가 기능

Decadd

두 가지 소수점 유형 값 추가.

int decadd (Decimal *arg1, Decimal *arg2, Decimal *sum);

범퍼카 토토 십진수 유형의 첫 번째 피연산자에 대한 포인터를 수신합니다 (arg1), 유형의 두 번째 피연산자에 대한 포인터 (arg2) 및 sum ( 유형 10 진수 값에 대한 포인터Sum). 성공시 범퍼카 토토 0을 반환합니다.ecpg_informix_num_overflow오버플로의 경우 반환됩니다.ecpg_informix_num_underflow언더 플로우의 경우. -1은 다른 실패로 반환되고errno각각으로 설정되었습니다errnopgtypeslib의 수

deccmp

십진 유형의 두 변수 비교

int deccmp (Decimal *arg1, Decimal *arg2);

범퍼카 토토 첫 번째 십진 값에 대한 포인터를 수신합니다 (arg1), 두 번째 소수점 값에 대한 포인터 (arg2) 그리고 어느 것이 더 큰 값인지를 나타내는 정수 값을 반환합니다.

  • 1, 값인 경우arg1포인트로 포인트가 값보다 큽니다var2포인트

  • -1, 값인 경우arg1포인트로 포인트 값보다 작습니다arg2포인트

  • 0, 값이라면arg1포인트 및 가치arg2

Deccopy

소수점 값 복사.

void Deccopy (소수 *SRC, 소수 *대상);

이 범퍼카 토토 첫 번째 인수로 복사 해야하는 소수점 값에 대한 포인터를받습니다 (SRC) 및 유형 10 진수의 대상 구조에 대한 포인터 (대상) 두 번째 인수로.

deccvasc

ASCII 표현에서 값을 소수점 유형으로 변환합니다.

int deccvasc (char *cp, int len, decimal *np);

함수는 변환 할 숫자의 문자열 표현을 포함하는 문자열에 대한 포인터를 수신합니다 (CP)와 길이Len. NP는 작전 결과를 절약하는 소수점 값에 대한 포인터입니다.

유효한 형식은 예를 들어 다음과 같습니다.-2, .794, +3.44, 592.49E07또는-32.84E-4.

함수는 성공시 0을 반환합니다. 오버플로 또는 언더 플로우가 발생한 경우ecpg_informix_num_overflow또는ecpg_informix_num_underflow반환됩니다. ASCII 표현을 구문 분석 할 수 없다면ecpg_informix_bad_numeric반환 또는ecpg_informix_bad_exponent지수를 구문 분석하는 동안이 문제가 발생한 경우

deccvdbl

유형 값을 두 배의 값을 유형의 값으로 변환합니다.

int deccvdbl (Double DBl, Decimal *np);

이 범퍼카 토토 첫 번째 인수로 변환 해야하는 유형의 변수를 수신합니다 (dbl). 두 번째 인수로서 (NP),이 범퍼카 토토 작업 결과를 유지 해야하는 소수 변수에 대한 포인터를 수신합니다.

범퍼카 토토 성공시 0을 반환하고 변환이 실패한 경우 음수 값을 반환합니다.

deccvint

int 유형 값을 유형의 값으로 변환합니다.

int deccvint (int in, decimal *np);

범퍼카 토토 첫 번째 인수로 변환 해야하는 유형 int의 변수를 수신합니다 (in). 두 번째 인수로서 (NP),이 범퍼카 토토 작업 결과를 유지 해야하는 십진 변수에 대한 포인터를 수신합니다.

범퍼카 토토 성공시 0을 반환하고 변환이 실패한 경우 음수 값을 반환합니다.

deccvlong

유형의 값을 유형의 값으로 변환하십시오.

int deccvlong (long lng, decimal *np);

범퍼카 토토 첫 번째 인수로 변환 해야하는 Long의 유형 변수를 수신합니다 (LNG). 두 번째 인수로서 (NP),이 범퍼카 토토 작업 결과를 유지 해야하는 소수 변수에 대한 포인터를 수신합니다.

변환이 실패하면 함수가 성공에서 0을 반환하고 음수 값을 반환합니다.

DECDIV

십진 유형의 두 변수를 나눕니다.

int decdiv (소수 *n1, 소수 *n2, 소수 *결과);

범퍼카 토토 첫 번째 ( 변수에 대한 포인터를받습니다.N1) 및 두 번째 (N2) 피연산자 및 계산N1/N2. 결과작업 결과를 유지 해야하는 변수에 대한 포인터입니다.

성공시, 0이 반환되고 부서가 실패하면 음수 값이 반환됩니다. 오버플로 또는 언더 플로가 발생하면 함수가 반환ecpg_informix_num_overflow또는ecpg_informix_num_underflow각각. 0으로 나누려는 시도가 관찰되면 함수가 반환ecpg_informix_divide_zero.

Decmul

두 가지 소수점 값을 곱하십시오.

int decmul (소수 *n1, 소수 *n2, 소수 *결과);

범퍼카 토토 첫 번째 ( 변수에 포인터를받습니다.N1) 및 두 번째 (N2) 피연산자 및 계산N1*N2. 결과는 작업 결과를 유지 해야하는 변수에 대한 포인터입니다.

성공시, 곱셈이 실패하면 0이 반환되고 음수 값이 반환됩니다. 오버플로 또는 언더 플로가 발생하면 함수가 반환ecpg_informix_num_overflow또는ecpg_informix_num_underflow각각.

DECSUB

다른 사람에게서 하나의 소수점 값을 빼십시오.

int decsub (소수 *n1, 소수 *n2, 소수 *결과);

범퍼카 토토 첫 번째 ( 변수에 대한 포인터를받습니다.N1) 및 두 번째 (N2) 피연산자 및 계산N1-N2. 결과는 작업 결과를 유지 해야하는 변수에 대한 포인터입니다.

성공시 0이 반환되고 뺄셈이 실패하면 음수 값이 반환됩니다. 오버플로 또는 언더 플로가 발생하면 함수가 반환ecpg_informix_num_overflow또는ecpg_informix_num_underflow각각.

dectoasc

CHAR* 문자열에서 ASCII 표현으로 소수점의 변수를 변환합니다.

int dectoasc (Decimal *np, char *cp, int len, int right)

이 범퍼카 토토 유형의 변수에 대한 포인터를 수신합니다 (NP) 텍스트 표현으로 변환됩니다.CP는 작업 결과를 유지 해야하는 버퍼입니다. 매개 변수오른쪽소수점의 오른쪽 오른쪽 오른쪽 수는 출력에 포함되어야합니다. 결과는이 소수점 자리로 반올림됩니다. 환경오른쪽~ -1은 사용 가능한 모든 소수 자릿수가 출력에 포함되어야 함을 나타냅니다. 출력 버퍼의 길이 인 경우Len후행 제로 바이트를 포함하여 텍스트 표현을 보유하기에 충분하지 않습니다.*문자는 결과에 저장되고 -1이 반환됩니다.

버퍼 인 경우 함수가 -1을 반환합니다CP너무 작거나ecpg_informix_out_of_memory메모리가 소진 된 경우.

dectodbl

십진제 유형 변수를 이중으로 변환합니다.

int dectodbl (Decimal *np, double *dblp);

범퍼카 토토 변환하기 위해 10 진수 값에 대한 포인터를 수신합니다 (NP) 및 작업 결과를 유지 해야하는 이중 변수에 대한 포인터 (DBLP).

성공시 0이 반환되고 변환이 실패하면 음수 값이 반환됩니다.

dectoint

십진제 유형 변수를 정수로 변환합니다.

int dectoint (Decimal *np, int *ip);

범퍼카 토토 변환하기 위해 소수점 값에 대한 포인터를 수신합니다 (NP) 및 조작 결과를 유지 해야하는 정수 변수에 대한 포인터 (IP).

성공시 0이 반환되고 변환이 실패하면 음수 값이 반환됩니다. 오버플로가 발생하면ecpg_informix_num_overflow반품.

ECPG 구현은와 다릅니다.Informix구현.Informix정수를 -32767에서 32767로 제한하는 반면 ECPG 구현의 한계는 아키텍처 (에 따라 다릅니다.int_min .. int_max).

dectolong

유형의 변수 변수를 긴 정수로 변환합니다.

int dectolong (Decimal *np, long *lngp);

범퍼카 토토 변환 할 소수 값에 대한 포인터를 수신합니다 (NP) 및 작업 결과를 유지 해야하는 긴 변수에 대한 포인터 (LNGP).

성공시 0이 반환되고 변환이 실패하면 음수 값이 반환됩니다. 오버플로가 발생하면ecpg_informix_num_overflow반환되었습니다.

ECPG 구현은와 다릅니다.Informix구현.Informix긴 정수를 긴 정수를 -2,147,483,647에서 2,147,483,647에서 2,147,483,647로 제한하는 반면 ECPG 구현의 한계는 아키텍처에 따라 다릅니다 (-long_max .. long_max).

rdatest

날짜를 c char* 문자열로 변환합니다.

int rdatest (날짜 d, char *str);

범퍼카 토토 두 개의 인수를 받고, 첫 번째 인수는 convert (의 날짜입니다.D) 그리고 두 번째는 대상 문자열에 대한 포인터입니다. 출력 형식은 항상yyyy-mm-dd이므로 문자열에 대해 최소 11 바이트 (제로 바이트 터미네이터 포함)를 할당해야합니다.

범퍼카 토토 성공시 0을 반환하고 오류의 경우 음수 값을 반환합니다.

ECPG의 구현은와 다릅니다.Informix구현. 안에Informix형식은 환경 변수를 설정하여 영향을받을 수 있습니다. 그러나 ECPG에서는 출력 형식을 변경할 수 없습니다.

rstrdate

날짜의 텍스트 표현을 구문 분석합니다.

int rstrdate (char *str, date *d);

범퍼카 토토 변환 날짜의 텍스트 표현을 수신합니다 (str) 및 유형의 변수에 대한 포인터 (d). 이 함수는 형식 마스크를 지정할 수 없습니다. 의 기본 형식 마스크를 사용합니다.Informixmm/dd/yyyy. 내부적 으로이 기능은를 통해 구현됩니다.rdefmtdate. 그러므로,rstrdate더 빠르지 않으며 선택이 있다면 선택해야합니다rdefmtdate이를 통해 형식 마스크를 명시 적으로 지정할 수 있습니다.

범퍼카 토토와 동일한 값을 반환합니다.rdefmtdate.

rtoday

현재 날짜 받기.

void rtoday (날짜 *d);

범퍼카 토토 날짜 변수에 대한 포인터를 수신합니다 (d) 현재 날짜로 설정됩니다.

내부적 으로이 범퍼카 토토를 사용합니다.pgtypesdate_today기능.

rjulmdy

유형 날짜 변수에서 하루, 달 및 연도의 값을 추출합니다.

int rjulmdy (날짜 d, 짧은 mdy [3]);

범퍼카 토토 날짜를받습니다D및 3 개의 짧은 정수 값 배열에 대한 포인터mdy. 변수 이름은 순차 순서를 나타냅니다.mdy [0]월 수를 포함하도록 설정됩니다.mdy [1]오늘의 가치로 설정되고mdy [2]연도가 포함됩니다.

함수는 현재 항상 0을 반환합니다.

내부적으로 범퍼카 토토를 사용합니다.pgtypesdate_julmdy기능.

rdefmtdate

형식 마스크를 사용하여 문자열을 유형 날짜 값으로 변환합니다.

int rdefmtdate (날짜 *d, char *fmt, char *str);

함수는 작동 결과를 유지 해야하는 날짜 값에 대한 포인터를 수신합니다 (d), 날짜를 구문 분석하는 데 사용할 형식 마스크 (FMT) 및 날짜 (의 텍스트 표현을 포함하는 C char* 문자열str). 텍스트 표현은 형식 마스크와 일치 할 것으로 예상됩니다. 그러나 문자열을 형식 마스크에 1 : 1 매핑 할 필요는 없습니다. 이 기능은 순차적 순서 만 분석하고 리터럴을 찾습니다yy또는yyyy올해의 위치를 ​​나타내는mm달의 위치를 ​​나타내려면DD오늘의 위치를 ​​표시합니다.

함수는 다음 값을 반환합니다.

  • 0- 함수가 성공적으로 종료되었습니다.

  • ECPG_INFORMIX_ENOSHORTDATE- 날짜에는 일, 월 및 연도 사이에 구분 기가 포함되어 있지 않습니다. 이 경우 입력 문자열의 길이는 정확히 6 또는 8 바이트이어야하지만 그렇지 않습니다.

  • ecpg_informix_enotdmy- 형식 문자열은 연도, 월 및 일의 순차 순서를 올바르게 표시하지 않았습니다.

  • ecpg_informix_bad_day- 입력 문자열에는 유효한 날이 포함되어 있지 않습니다.

  • ecpg_informix_bad_month- 입력 문자열에는 유효한 달이 포함되어 있지 않습니다.

  • ecpg_informix_bad_year- 입력 문자열에는 유효한 연도가 포함되어 있지 않습니다.

내부적 으로이 범퍼카 토토를 사용하도록 구현됩니다.pgtypesdate_defmt_asc함수. 예제 입력 테이블에 대한 참조를 참조하십시오.

rfmtdate

형식 마스크를 사용하여 유형 날짜 변수를 텍스트 표현으로 변환합니다.

int rfmtdate (날짜 d, char *fmt, char *str);

범퍼카 토토 변환 날짜를 수신합니다 (d), 형식 마스크 (FMT) 및 날짜 (의 텍스트 표현을 보유 할 문자열str).

성공시 0이 반환되고 오류가 발생하면 음수 값이 반환됩니다.

내부적 으로이 범퍼카 토토를 사용합니다.pgtypesdate_fmt_asc함수, 예제는 참조를 참조하십시오.

rmdyjul

날짜, 달 및 날짜를 ​​지정하는 3 개의 짧은 정수 배열에서 날짜 값을 만듭니다.

int rmdyjul (짧은 mdy [3], 날짜 *d);

범퍼카 토토 3 개의 짧은 정수 배열을 수신합니다 (mdy) 및 작업 결과를 유지 해야하는 유형 날짜 변수에 대한 포인터.

현재 함수는 항상 0을 반환합니다.

내부적으로 함수가 함수를 사용하도록 구현됩니다pgtypesdate_mdyjul.

rdayofweek

날짜 값에 대한 요일을 나타내는 숫자를 반환합니다.

int rdayofweek (날짜 d);

범퍼카 토토 날짜 변수를 수신합니다D이 날짜의 요일을 나타내는 유일한 논증으로 반환합니다.

  • 0- 일요일

  • 1- 월요일

  • 2- 화요일

  • 3- 수요일

  • 4- 목요일

  • 5- 금요일

  • 6- 토요일

내부적으로 함수가 함수를 사용하도록 구현됩니다pgtypesdate_dayofweek.

dtcurrent

현재 타임 스탬프를 검색합니다.

void dtcurrent (timestamp *ts);

함수는 현재 타임 스탬프를 검색하고이를 타임 스탬프 변수에 저장합니다.TS포인트로.

dtcvasc

텍스트 표현에서 타임 스탬프 변수로 타임 스탬프를 파싱합니다.

int dtcvasc (char *str, timestamp *ts);

범퍼카 토토 문자열을 구문 분석합니다 (str) 및 작업 결과를 유지 해야하는 타임 스탬프 변수에 대한 포인터 (TS).

범퍼카 토토 성공시 0을 반환하고 오류의 경우 음수 값을 반환합니다.

내부적 으로이 범퍼카 토토를 사용합니다.pgtypestimestamp_from_asc함수. 예제 입력이있는 테이블에 대한 참조를 참조하십시오.

dtcvfmtasc

형식 마스크를 타임 스탬프 변수로 사용하여 텍스트 표현에서 타임 스탬프를 구문 분석합니다.

dtcvfmtasc (char *inbuf, char *fmtstr, timestamp *dtvalue)

범퍼카 토토 문자열을 구문 분석합니다 (Inbuf), 사용하는 형식 마스크 (FMTSTR) 및 작업 결과를 유지 해야하는 타임 스탬프 변수에 대한 포인터 (dtvalue).

이 범퍼카 토토를 통해 구현됩니다.PGTYPESTIMESTAMP_DEFMT_ASC함수. 사용할 수있는 형식 지정자 목록은 문서를 참조하십시오.

범퍼카 토토 성공시 0을 반환하고 오류의 경우 음수 값을 반환합니다.

dtsub

하나의 타임 스탬프를 다른 타임 스탬프에서 빼고 유형 간격의 변수를 반환합니다.

int dtsub (timestamp *ts1, timestamp *ts2, interval *iv);

범퍼카 토토 타임 스탬프 변수를 빼게됩니다.TS2타임 스탬프 변수를 가리키는TS1간격 변수에 결과를 포인트하고 저장합니다.IV

성공시, 오류가 발생하면 함수가 0과 음수 값을 반환합니다.

dttoasc

타임 스탬프 변수를 C char* 문자열로 변환합니다.

int dttoasc (timestamp *ts, char *output);

범퍼카 토토 timestamp 변수에 대한 포인터를 수신합니다 (TS) 및 작업 결과를 유지 해야하는 문자열 (출력). 그것은 변환TSSQL 표준에 따른 텍스트 표현, 즉yyyy-mm-dd hh : mm : ss.

성공시, 오류가 발생하면 함수가 0과 음수 값을 반환합니다.

dttofmtasc

형식 마스크를 사용하여 타임 스탬프 변수를 C char로 변환합니다.

int dttofmtasc (timestamp *ts, char *output, int str_len, char *fmtstr);

이 범퍼카 토토 첫 번째 인수로 변환하기 위해 타임 스탬프에 대한 포인터를 수신합니다 (TS), 출력 버퍼에 대한 포인터 (출력), 출력 버퍼에 할당 된 최대 길이 (str_len) 및 변환에 사용할 형식 마스크 (FMTSTR).

성공시, 오류가 발생하면 함수가 0과 음수 값을 반환합니다.

내부적 으로이 범퍼카 토토를 사용합니다.PGTYPESTIMESTAMP_FMT_ASC함수. 어떤 형식 마스크 지정자를 사용할 수 있는지에 대한 정보는 참조를 참조하십시오.

in asASC

간격 변수를 C char* 문자열로 변환합니다.

int interasc (Interval *i, char *str);

범퍼카 토토 변환 할 간격 변수에 대한 포인터를 수신합니다 (i) 및 작업 결과를 유지 해야하는 문자열 (str). 그것은 변환iSQL 표준에 따른 텍스트 표현,YYYY-MM-DD HH : MM : SS.

성공시, 오류가 발생하면 함수가 0과 음수 값을 반환합니다.

rfmtlong

형식 마스크를 사용하여 긴 정수 값을 텍스트 표현으로 변환합니다.

int rfmtlong (long lng_val, char *fmt, char *outbuf);

범퍼카 토토 긴 값을받습니다lng_val, 형식 마스크FMT및 출력 버퍼에 대한 포인터outbuf. 형식 마스크에 따라 긴 값을 텍스트 표현으로 변환합니다.

형식 마스크는 다음 형식으로 구성 될 수 있습니다.

  • *(별표) -이 위치가 비워지면 별표로 채우십시오.

  • &(Ampersand) -이 위치가 비워지면 0으로 채우십시오.

  • #- 이끄는 제로를 공란으로 돌립니다.

  • <- 문자열의 숫자를 좌회전합니다.

  • ,(Comma) - 쉼표로 분리 된 3 자리 숫자 그룹에 4 자리 이상의 그룹 번호.

  • .(기간) -이 문자는 숫자의 전체 수 부분을 분수 부분에서 분리합니다.

  • -(마이너스) - 숫자가 음수 인 경우 마이너스 부호가 나타납니다.

  • +(플러스) - 숫자가 양수 값이면 플러스 부호가 나타납니다.

  • (- 음수 앞의 마이너스 부호를 대체합니다. 마이너스 부호가 나타나지 않습니다.

  • )-이 문자는 마이너스를 대체하고 음수 값 뒤에 인쇄됩니다.

  • $- 통화 기호.

Rupshift

문자열을 대문자로 변환하십시오.

void rupshift (char *str);

범퍼카 토토 문자열에 대한 포인터를 수신하고 모든 소문자 문자를 대문자로 변환합니다.

byleng

후행 공백을 세지 않고 문자열의 문자 수를 반환합니다.

int byleng (char *str, int len);

범퍼카 토토 고정 길이 문자열이 첫 번째 인수 (로 기대합니다.str) 두 번째 인수로서의 길이 (Len). 그것은 유효 문자의 수, 즉 후행 블랭크가없는 줄의 길이를 반환합니다.

ldchar

고정 길이 문자열을 널리 터진 문자열에 복사하십시오.

void ldchar (char *src, int len, char *dest);

범퍼카 토토 복사 할 고정 길이 문자열을 수신합니다 (SRC), 길이 (Len) 및 대상 메모리에 대한 포인터 (dest). 적어도 예약해야합니다Len+1문자열의 바이트dest범퍼카 토토 최대 복사Len새 위치에 바이트 (소스 문자열에 후행 블랭크가있는 경우 적음) 및 Null-Terminator를 추가합니다.

rgetmsg
int rgetmsg (int msgnum, char *s, int maxsize);

이 기능은 존재하지만 현재 구현되지 않았습니다!

rtypalign
int rtypalign (int offset, int type);

이 기능은 존재하지만 현재 구현되지 않았습니다!

rtypmsize
int rtypmsize (int type, int len);

이 함수는 존재하지만 현재 구현되지 않았습니다!

rtypwidth
int rtypwidth (int sqltype, int sqllen);

이 기능은 존재하지만 현재 구현되지 않았습니다!

RSETNULL

변수를 null로 설정합니다.

int rsetnull (int t, char *ptr);

범퍼카 토토 변수의 유형을 나타내는 정수를 수신하고 c char* 포인터로 캐스팅되는 변수 자체에 대한 포인터를 나타냅니다..

다음 유형이 있습니다 :

  • CCHARTYPE- 유형 변수의 경우char또는char*

  • cshorttype- 유형 변수의 경우짧은 int

  • Cinttype- 유형 변수의 경우int

  • cbooltype- 유형 변수의 경우부울

  • cfloattype- 유형 변수의 경우float

  • ClongType- 유형 변수의 경우Long

  • CDOUBLETYPE- 유형 변수의 경우더블

  • CDECIMATTEPE- 유형 변수의 경우소수점

  • ​​CDATETYPE- 유형 변수의 경우날짜

  • CDTIMETYPE- 유형 변수의 경우타임 스탬프

이 기능에 대한 호출의 예는 다음과 같습니다.

$ char c [] = "abc";
$ 짧은 s = 17;
$ int i = -74874;

RSETNULL (CCHARTYPE, (char *) C);
rsetnull (cshorttype, (char *) & s);
rsetnull (cinttype, (char *) & i);
Risnull

변수가 null인지 테스트합니다.

int risnull (int t, char *ptr);

범퍼카 토토 테스트 할 변수의 유형을 수신합니다 (T)이 변수에 대한 포인터 (PTR). 후자는 숯*에 캐스트되어야한다는 점에 유의하십시오. 함수보기RSETNULL가능한 변수 유형 목록의 경우

이 기능을 사용하는 방법의 예는 다음과 같습니다.

$ char c [] = "abc";
$ 짧은 s = 17;
$ int i = -74874;

Risnull (CCHARTYPE, (char *) c);
Risnull (cshorttype, (char *) & s);
Risnull (Cinttype, (char *) & i);

36.15.5. 추가 상수

여기의 모든 상수는 오류를 설명하고 모든 상수는 음수 값을 나타내도록 정의됩니다. 다른 상수에 대한 설명에서 현재 구현에서 상수가 나타내는 값을 찾을 수도 있습니다. 그러나이 숫자에 의존해서는 안됩니다. 그러나 당신은 그들 모두가 음수 값을 나타내는 것으로 정의된다는 사실에 의존 할 수 있습니다.

ecpg_informix_num_overflow

함수 계산에서 오버플로가 발생하면이 값을 반환합니다. 내부적으로 -1200으로 정의됩니다 (Informix정의).

ecpg_informix_num_underflow

함수 계산에서 언더 플로가 발생하면이 값을 반환합니다. 내부적으로 -1201 (로 정의됩니다.Informix정의).

ecpg_informix_divide_zero

함수는 0으로 나누려는 시도가 관찰되면이 값을 반환합니다. 내부적으로 -1202로 정의됩니다 (Informix정의).

ecpg_informix_bad_year

함수는 날짜를 구문 분석하는 동안 1 년 동안 나쁜 값이 발견되면이 값을 반환합니다. 내부적으로 -1204로 정의됩니다 (Informix정의).

ecpg_informix_bad_month

함수는 날짜를 구문 분석하는 동안 한 달의 나쁜 값이 발견되면이 값을 반환합니다. 내부적으로 -1205로 정의됩니다 (Informix정의).

ecpg_informix_bad_day

함수 날짜를 구문 분석하는 동안 하루의 나쁜 값이 발견되면이 값을 반환합니다. 내부적으로 -1206으로 정의됩니다 (Informix정의).

ECPG_INFORMIX_ENOSHORTDATE

함수는 구문 분석 루틴에 짧은 날짜 표현이 필요하지만 날짜 문자열을 올바른 길이로 얻지 못한 경우이 값을 반환합니다. 내부적으로 -1209로 정의됩니다 (Informix정의).

ecpg_informix_date_convert

함수 날짜 서식 중에 오류가 발생하면이 값을 반환합니다. 내부적으로 -1210으로 정의됩니다 (Informix정의).

ecpg_informix_out_of_memory

함수는 작동 중에 메모리가 소진 된 경우이 값을 반환합니다. 내부적으로 -1211 (로 정의됩니다.Informix정의).

ecpg_informix_enotdmy

범퍼카 토토 구문 분석 루틴이 형식 마스크를 가져와야하는 경우이 값을 반환합니다 (kuemmddyy) 그러나 모든 필드가 올바르게 나열된 것은 아닙니다. 내부적으로 -1212로 정의됩니다 (Informix정의).

ecpg_informix_bad_numeric

함수는 오류가 포함되어 있기 때문에 구문 분석 루틴이 숫자 값에 대한 텍스트 표현을 구문 분석 할 수 없거나 숫자 변수 중 하나 이상이 잘못 되었기 때문에 숫자 변수와 관련된 계산을 완료 할 수없는 경우이 값을 반환합니다. Internally it is defined as -1213 (theInformix정의).

ecpg_informix_bad_exponent

함수는 구문 분석 루틴이 지수를 구문 분석 할 수없는 경우이 값을 반환합니다. 내부적으로 -1216 (로 정의됩니다.Informix정의).

ecpg_informix_bad_date

함수 파싱 루틴이 날짜를 구문 분석 할 수없는 경우이 값을 반환합니다. 내부적으로 -1218 (로 정의됩니다.Informix정의).

ecpg_informix_extra_chars

함수는 구문 분석 루틴이 추가 문자가 전달되면이 값을 반환합니다. 구문 분석 할 수 없습니다. 내부적으로 -1264로 정의됩니다 (Informix정의).

수정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면