이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다토토 사이트 PostgreSQL : 문서 : 17 : 34.15. Informix 호환성버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

33.15. 롤 토토호환성 모드

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

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

참고 :$및 다음 전처리 기 지시, 즉포함, 정의, ifdef등. 그렇지 않으면 전처리 기가 할 것입니다 토큰을 호스트 변수로 구문 분석하십시오.

두 가지 호환 모드가 있습니다.롤 토토, 롤 토토_se

이 호환 모드를 사용하는 프로그램을 연결할 때, 와 연결하는 것을 잊지 마십시오.libcompatECPG와 함께 배송됩니다.

이전에 설명 된 구문 설탕 외에도롤 토토호환성 모드 데이터의 입력, 출력 및 변환에 대한 일부 기능을 포트 E/SQL에서 ecpg로 알려진 임베디드 SQL 문의 내장

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

33.15.1. 추가 유형

저장을위한 정보 특이 적 "문자열"의사 유형 오른쪽 트림 문자열 데이터가 이제 지원됩니다 사용하지 않고 롤 토토-Modetypedef. 실제로 롤 토토-Mode에서 ECPG는 소스 파일 처리를 거부합니다. 포함typedef ongythe 끈;

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

exec SQL Mycur에 : userId;

33.15.2. 추가/누락 된 내장 SQL 문

닫기 데이터베이스

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

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

ECPG가 비교하는 방식의 차이로 인해 롤 토토의 ESQL/C (즉, 순수한 문법입니다 변환 및 기본에 의존하는 단계 런타임 라이브러리) 없음무료 cursor_nameECPG의 진술. 이건 안에 있기 때문입니다 ECPG,커서 선언그렇지 않습니다 런타임 라이브러리로 함수 호출로 변환하십시오 커서 이름에 사용됩니다. 이것은 없음을 의미합니다 ECPG 런타임에서 SQL 커서의 런타임 부기 도서관, Postgresql Server에서만.

무료 state_name

Free Statement_nameis 동의어거래를 준비하십시오 state_name.

33.15.3. 정보 호환 SQLDA 설명 자 영역

롤 토토 호환 모드는 다른 구조를 지원합니다 에 설명 된 것섹션 33.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 값은 값을 의미합니다 이 필드는 무감각합니다. 그렇지 않으면 유효한 포인터 및sqlitype올바르게 설정해야합니다. 예:

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

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

sqlformat

롤 토토에 예약, 값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_롤 토토/sqlda.pgc회귀 테스트.

33.15.4. 추가의 기능

Decadd

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

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

이 롤 토토 첫 번째 피연산자에 대한 포인터를 수신합니다 10 진수 유형 (arg1), a 10 진수 유형의 두 번째 피연산자에 대한 포인터 (arg2) 및 유형 값에 대한 포인터 합 (를 포함하는 10 진수Sum). 성공시 롤 토토 0을 반환합니다.ecpg_롤 토토_num_overflowIS 오버플로의 경우 반환 및ecpg_롤 토토_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 표현에서 값을 a로 변환합니다 소수 유형.

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

함수는 문자열에 대한 포인터를받습니다 숫자의 문자열 표현을 포함합니다 변환 (CP)뿐만 아니라 길이Len. NP는 소수점 값에 대한 포인터입니다 작업 결과를 저장합니다.

유효한 형식은 예를 들어 :-2, .794, +3.44, 592.49E07또는-32.84E-4.

롤 토토 성공시 0을 반환합니다. 오버플로가 있거나 언더 플로 발생,ecpg_롤 토토_num_overflow또는ecpg_롤 토토_num_underflow반환됩니다. ASCII 표현을 구문 분석 할 수 없다면ecpg_롤 토토_bad_numericis 반품 또는ecpg_롤 토토_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. 결과is 결과를 유지 해야하는 변수에 대한 포인터 작전.

성공시 0이 반환되고 음수 값이 부서가 실패합니다. 오버플로 또는 언더 플로가 발생하면 기능 반환ecpg_롤 토토_num_overflow또는ecpg_롤 토토_num_underflow각각. 0으로 나누려는 시도가 관찰되면 기능이 보고ecpg_informix_divide_zero.

Decmul

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

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

롤 토토 그 변수에 대한 포인터를 수신합니다 첫 번째 (N1) 및 두번째 (N2) 피연산자 및 계산N1*N2. 결과is 결과를 유지 해야하는 변수에 대한 포인터 작전.

성공시 0이 반환되고 음수 값이 곱셈이 실패합니다. 오버플로 또는 언더 플로가 발생하면 함수는 반환ecpg_롤 토토_num_overflow또는ecpg_롤 토토_num_underflow각각.

DECSUB

다른 사람에게서 10 진수 값을 빼십시오.

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

롤 토토 그 변수에 대한 포인터를 수신합니다 첫 번째 (N1) 및 두번째 (N2) 피연산자 및 계산N1-N2. 결과is 결과를 유지 해야하는 변수에 대한 포인터 작전.

성공시 0이 반환되고 음수 값이 뺄셈이 실패합니다. 오버플로 또는 언더 플로가 발생하면 기능 반환ecpg_롤 토토_num_overflow또는ecpg_롤 토토_num_underflow각각.

dectoasc

십진수의 변수를 ASCII로 변환합니다 C char* 문자열의 표현.

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

롤 토토 유형 변수에 대한 포인터를 수신합니다. 10 진수 (NP)로 변환합니다 그것의 텍스트 표현.CP작업. 매개 변수오른쪽소수점의 오른쪽 오른쪽 수를 지정합니다 출력에 포함되어야합니다. 결과가 될 것입니다 이 수의 10 진수 숫자로 반올림됩니다. 환경오른쪽~ 1은 모두를 나타냅니다 사용 가능한 10 진수 숫자는 다음에 포함되어야합니다 산출. 출력 버퍼의 길이 인 경우 표시Len그렇지 않습니다 텍스트 표현을 포함하기에 충분합니다 후행 제로 바이트, 단일*캐릭터는 결과에 -1에 저장됩니다 반품.

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

dectodbl

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

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

롤 토토 소수점 값에 대한 포인터를 수신합니다 변환하려면 (NP) 및 포인터 결과를 유지 해야하는 이중 변수 작업 (DBLP).

성공시 0이 반환되고 음수 값이 전환 실패.

dectoint

변수를 정수로 소수점을 입력하도록 변수를 변환합니다.

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

롤 토토 소수점 값에 대한 포인터를 수신합니다 변환하려면 (NP) 및 포인터 결과를 유지 해야하는 정수 변수 작업 (IP).

성공시 0이 반환되고 음수 값이 변환이 실패했습니다. 오버플로가 발생하면ecpg_롤 토토_num_overflowIS 반품.

ECPG 구현은와 다릅니다.롤 토토구현.롤 토토제한 an -32767에서 32767까지의 정수 ECPG 구현의 한계는 건축학 (-int_max .. int_max).

dectolong

변수를 변수로 변환하여 소수점을 길게 입력하십시오 정수.

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

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

성공시 0이 반환되고 음수 값이 변환이 실패했습니다. 오버플로가 발생하면ecpg_롤 토토_num_overflowIS 반품.

ECPG 구현은와 다릅니다.롤 토토구현.롤 토토긴 제한 정수까지의 범위는 -2,147,483,647에서 2,147,483,647, ECPG의 한계 구현은 아키텍처에 따라 다릅니다 (-long_max .. long_max).

rdatest

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

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

롤 토토 두 개의 인수를받습니다. 첫 번째 인수는입니다 전환 날짜 (D) 및 두 번째는 대상 문자열에 대한 포인터입니다. 출력 형식은 항상yyyy-mm-dd, SO 최소 11 바이트를 할당해야합니다 ( 문자열에 대한 제로 바이트 터미네이터).

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

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

rstrdate

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

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

롤 토토 텍스트 표현을 수신합니다 전환 날짜 (str) 및 a 유형의 변수에 대한 포인터 날짜 (D). 이 기능은 허용되지 않습니다 형식 마스크를 지정합니다. 의 기본 형식 마스크를 사용합니다.롤 토토mm/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);

롤 토토 현재 타임 스탬프를 검색하고 저장합니다 TimeStamp 변수로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

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

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

롤 토토 타임 스탬프 변수를 빼게됩니다.TS2타임 스탬프에서 포인트 변수TS1결과를 간격 변수에 저장합니다.IV

성공시 롤 토토 0과 음수를 반환합니다 오류가 발생한 경우 가치.

dttoasc

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

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

롤 토토 타임 스탬프에 대한 포인터를 수신합니다 변환 할 변수 (TS) 및 작업 결과를 유지 해야하는 문자열 (출력). 그것은 변환TS텍스트 표현에 따라 SQL 표준에yyyy-mm-dd hh : mm : ss.

성공시 롤 토토 0과 음수를 반환합니다 오류가 발생한 경우 가치.

dttofmtasc

타임 스탬프 변수를 c char*로 변환* 형식 마스크.

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

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

성공시 롤 토토 0과 음수를 반환합니다 오류가 발생한 경우 가치.

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

in andASC

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

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

롤 토토 간격에 대한 포인터를 수신합니다 변환 할 변수 (i) 및 작업 결과를 유지 해야하는 문자열 (str). 그것은 변환i텍스트 표현에 따라 SQL 표준에yyyy-mm-dd hh : mm : ss.

성공시 롤 토토 0과 음수를 반환합니다 오류가 발생한 경우 가치.

rfmtlong

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

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

롤 토토 긴 값을받습니다lng_val, 형식 마스크FMT및 출력 버퍼에 대한 포인터outbuf. 그것은 오래 전환합니다 형식 마스크에 따라 텍스트에 대한 값 대표.

형식 마스크는 다음과 같이 구성 될 수 있습니다 문자 지정 형식 :

  • *(별표) -이 경우 위치는 비어 있으면 an으로 채우십시오 별표.

  • &(Ampersand) - if 이 위치는 그렇지 않으면 비워집니다 Zero.

  • #- 선두 제로를 돌리십시오 공백으로.

  • <- 좌심 정당화 문자열의 번호.

  • ,(쉼표) - 그룹 번호 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새 위치에 바이트 (덜 소스 문자열에는 후행 공백이 있습니다) 및 추가합니다 널 터미네이터.

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- a 유형 변수char또는char*

  • cshorttype- a 유형 변수짧은 int

  • Cinttype- 변수의 경우 유형int

  • cbooltype- a 유형 변수부울

  • cfloattype- a 유형 변수float

  • ClongType- a 유형 변수Long

  • CDOUBLETYPE- a 유형 변수더블

  • CDECIMATTEPE- a 유형 변수Decimal

  • CDATETYPE- a 유형 변수날짜

  • CDTIMETYPE- a 유형 변수타임 스탬프

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

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

33.15.5. 추가의 상수

여기의 모든 상수는 오류와 그 모든 상수를 설명합니다. 음수 값을 나타내는 것으로 정의됩니다. 설명에서 다른 상수에서 당신은 또한 상수는 현재 구현에 나타납니다. 그러나 당신 이 숫자에 의존해서는 안됩니다. 그러나 당신은에 의존 할 수 있습니다 사실 모두 음의 값을 나타내는 것으로 정의됩니다.

ecpg_롤 토토_num_overflow

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

ecpg_롤 토토_num_underflow

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

ecpg_informix_divide_zero

함수를 나누려고 시도하면이 값을 반환합니다. 0이 관찰됩니다. 내부적으로 -1202로 정의됩니다 (롤 토토정의).

ecpg_informix_bad_year

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

ecpg_informix_bad_month

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

ecpg_informix_bad_day

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

ECPG_INFORMIX_ENOSHORTDATE

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

ecpg_informix_date_convert

함수 오류가 발생하면이 값을 반환합니다 날짜 서식 동안. 내부적으로 -1210으로 정의됩니다 (그만큼롤 토토정의).

ecpg_informix_out_of_memory

함수 메모리가 소진되면이 값을 반환합니다 수술 중. 내부적으로 -1211로 정의됩니다 (그만큼롤 토토정의).

ecpg_informix_enotdmy

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

ecpg_롤 토토_bad_numeric

함수는 구문 분석 시이 값을 반환합니다 루틴은 a 숫자 값은 오류가 포함되어 있거나 루틴 인 경우 숫자 변수와 관련된 계산을 완료 할 수 없습니다 숫자 변수 중 하나 이상이 유효하지 않기 때문입니다. 내부적으로 -1213 (로 정의됩니다.롤 토토정의).

ecpg_롤 토토_bad_exponent

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

ecpg_informix_bad_date

함수는 구문 분석 루틴 인 경우이 값을 반환합니다 날짜를 구문 분석 할 수 없습니다. 내부적으로 -1218로 정의됩니다 (그만큼롤 토토정의).

ecpg_informix_extra_chars

함수는 구문 분석 루틴 인 경우이 값을 반환합니다 추가 캐릭터를 통과시킬 수 없습니다. 내부적으로 -1264로 정의 (롤 토토정의).