# 36.15.Informix兼容模式

36.15.1. 其他类型

36.15.2. 附加/缺少嵌入式SQL语句

36.15.3. Informix兼容的SQLDA描述符区域

36.15.4. 附加功能

36.15.5. 附加常数

ecpg可以在所谓的Informix兼容模式。如果此模式处于活动状态,它会尝试将其作为Informix E/SQL的Informix预编译器。一般来说,这将允许你使用美元符号,而不是美元符号执行SQL用于引入嵌入式SQL命令的基元:

$int j = 3;
$CONNECT TO :dbname;
$CREATE TABLE test(i INT PRIMARY KEY, j INT);
$INSERT INTO test(i, j) VALUES (7, :j);
$COMMIT;

# 笔记

两个选项之间不得有任何空白$下面是一个预处理器指令,包括,定义,条件编译否则,预处理器将把令牌解析为主机变量。

有两种兼容模式:INFORMIX,INFORMIX_SE

链接使用此兼容模式的程序时,请记住链接到利比卡特这是ECPG附带的。

除了前面解释的语法糖之外,Informix兼容模式还移植了一些用于数据输入、输出和转换的函数,以及从E/SQL到ECPG的嵌入式SQL语句。

Informix兼容模式与ECPG的pgtypeslib库紧密相连。pgtypeslib将SQL数据类型映射到C主机程序内的数据类型,Informix兼容模式的大多数附加功能允许您在这些C主机程序类型上操作。但是请注意,兼容性的范围是有限的。它不试图复制Informix行为;它允许您执行或多或少相同的操作,并为您提供具有相同名称和相同基本行为的函数,但如果您目前正在使用Informix,它不是替代品。此外,有些数据类型是不同的。例如,PostgreSQL的datetime和interval类型不知道范围,例如年复一年所以你也不会在ECPG中找到支持。

# 36.15.1.其他类型

在Informix模式下,现在支持存储右修剪字符串数据的Informix特殊“string”伪类型,而无需使用类型定义事实上,在Informix模式下,ECPG拒绝处理包含typedef sometype字符串;

EXEC SQL BEGIN DECLARE SECTION;
string userid; /* this variable will contain trimmed data */
EXEC SQL END DECLARE SECTION;

EXEC SQL FETCH MYCUR INTO :userid;

# 36.15.2.附加/缺少嵌入式SQL语句

关闭数据库

此语句关闭当前连接。事实上,这是ECPG的同义词断开电流:

$CLOSE DATABASE;                /* close the current connection */
EXEC SQL CLOSE DATABASE;

自由游标名称

由于ECPG的工作方式与Informix的ESQL/C(即,哪些步骤纯粹是语法转换,哪些步骤依赖于底层的运行时库)不同,因此没有任何区别自由游标名称ECPG中的声明。这是因为在ECPG中,声明游标不会转换为对运行时库的函数调用,该库使用游标名称。这意味着ECPG运行时库中没有SQL游标的运行时簿记,只有在PostgreSQL server中。

自由声明

自由声明是的同义词取消分配准备语句\u名称.

# 36.15.3.Informix兼容的SQLDA描述符区域

Informix兼容模式支持与中描述的不同的结构第36.7.2节.见下文:

struct sqlvar_compat
{
    short   sqltype;
    int     sqllen;
    char   *sqldata;
    short  *sqlind;
    char   *sqlname;
    char   *sqlformat;
    short   sqlitype;
    short   sqlilen;
    char   *sqlidata;
    int     sqlxid;
    char   *sqltypename;
    short   sqltypelen;
    short   sqlownerlen;
    short   sqlsourcetype;
    char   *sqlownername;
    int     sqlsourceid;
    char   *sqlilongdata;
    int     sqlflags;
    void   *sqlreserved;
};

struct sqlda_compat
{
    short  sqld;
    struct sqlvar_compat *sqlvar;
    char   desc_name[19];
    short  desc_occ;
    struct sqlda_compat *desc_next;
    void  *reserved;
};

typedef struct sqlvar_compat    sqlvar_t;
typedef struct sqlda_compat     sqlda_t;

全局属性包括:

sqld

表中的字段数SQLDA描述符。

sqlvar

指向每个字段属性的指针。

描述你的名字

未使用,填充了零字节。

描述

分配结构的大小。

下一步

如果结果集包含多条记录,则指向下一个SQLDA结构的指针。

含蓄的

未使用的指针,包含NULL。保持Informix兼容性。

每个字段的属性如下所示,它们存储在sqlvar数组:

sqltype

字段的类型。常数在sqltypes。H

sqllen

字段数据的长度。

sqldata

指向字段数据的指针。指针是炭*类型,它所指向的数据是二进制格式的。例子:

int intval;

switch (sqldata->sqlvar[i].sqltype)
{
    case SQLINTEGER:
        intval = *(int *)sqldata->sqlvar[i].sqldata;
        break;
  ...
}

sqlind

指向空指示器的指针。如果由descripe或FETCH返回,则它始终是有效指针。如果用作处决使用sqlda;空指针值意味着这个字段的值不是空的。否则为有效指针和sqlitype必须正确设置。例子:

if (*(int2 *)sqldata->sqlvar[i].sqlind != 0)
    printf("value is NULL\n");

sqlname

字段的名称。以0结尾的字符串。

sqlformat

保留在Informix中,值PQfformat在球场上。

sqlitype

空指示符数据的类型。从服务器返回数据时总是使用SQLSMINT。当SQLDA用于参数化查询,根据集合类型处理数据。

sqlilen

空指示符数据的长度。

sqlxid

字段的扩展类型,结果为PQftype.

sqltypename
sqltypelen
sqlownerlen
sqlsourcetype
sqlownername
sqlsourceid
sqlflags
sqlreserved

没用过。

sqlilongdata

等于sqldata如果sqllen大于32kB。

例子:

EXEC SQL INCLUDE sqlda.h;

    sqlda_t        *sqlda; /* This doesn't need to be under embedded DECLARE SECTION */

    EXEC SQL BEGIN DECLARE SECTION;
    char *prep_stmt = "select * from table1";
    int i;
    EXEC SQL END DECLARE SECTION;

    ...

    EXEC SQL PREPARE mystmt FROM :prep_stmt;

    EXEC SQL DESCRIBE mystmt INTO sqlda;

    printf("# of fields: %d\n", sqlda->sqld);
    for (i = 0; i < sqlda->sqld; i++)
      printf("field %d: \"%s\"\n", sqlda->sqlvar[i]->sqlname);

    EXEC SQL DECLARE mycursor CURSOR FOR mystmt;
    EXEC SQL OPEN mycursor;
    EXEC SQL WHENEVER NOT FOUND GOTO out;

    while (1)
    {
      EXEC SQL FETCH mycursor USING sqlda;
    }

    EXEC SQL CLOSE mycursor;

    free(sqlda); /* The main structure is all to be free(),
                  * sqlda and sqlda->sqlvar is in one allocated area */

有关更多信息,请参阅sqlda。H标题和标题src/interfaces/ecpg/test/compat_informix/sqlda。pgc回归测试。

# 36.15.4.附加功能

脱卡

添加两个十进制类型的值。

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

该函数接收指向decimal类型的第一个操作数的指针(arg1),指向十进制类型的第二个操作数的指针(arg2)以及一个指向将包含总和的十进制类型值的指针(总和).成功后,函数返回0.ECPG_INFORMIX_NUM_溢出在溢出和ECPG_INFORMIX_NUM_下溢以防下溢-对于其他故障和故障,返回1呃不设置为相应的呃不pgtypeslib的编号。

deccmp

比较decimal类型的两个变量。

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

函数接收指向第一个十进制值的指针(arg1),指向第二个十进制值的指针(arg2)并返回一个整数值,该整数值指示哪个值更大。

  • 1.如果该值arg1指向的值大于var2指向

  • -1.如果该值arg1指向的值小于arg2指向

  • 0,如果该值arg1指的是arg2分数相等

decopy

复制一个十进制值。

void deccopy(decimal *src, decimal *target);

该函数接收一个指向应作为第一个参数复制的十进制值的指针(src)以及指向decimal类型的目标结构的指针(目标)作为第二个论点。

deccvasc

将ASCII表示形式的值转换为十进制类型。

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

函数接收一个指向字符串的指针,该字符串包含要转换的数字的字符串表示形式(内容提供商)以及它的长度伦恩. np是指向保存操作结果的十进制值的指针。

有效的格式包括:-2, .794, +3.44, 592.49E07-32.84e-4.

函数在成功时返回0.如果发生溢流或下溢,ECPG_INFORMIX_NUM_溢出ECPG_INFORMIX_NUM_下溢被退回。如果无法解析ASCII表示形式,ECPG_INFORMIX_BAD_NUMERIC被退回或ECPG_INFORMIX_BAD_指数如果在分析指数时出现此问题。

deccvdbl

将double类型的值转换为decimal类型的值。

int deccvdbl(double dbl, decimal *np);

函数接收应该转换为其第一个参数的double类型的变量(dbl).作为第二个论点(np),该函数接收一个指向十进制变量的指针,该变量应保存操作结果。

函数在成功时返回0,如果转换失败则返回负值。

deccvint

将int类型的值转换为decimal类型的值。

int deccvint(int in, decimal *np);

函数接收int类型的变量,该变量应转换为其第一个参数(在里面).作为第二个论点(np),该函数接收一个指向十进制变量的指针,该变量应保存操作结果。

函数在成功时返回0,如果转换失败则返回负值。

德克夫隆

将long类型的值转换为decimal类型的值。

int deccvlong(long lng, decimal *np);

函数接收long类型的变量,该变量应作为其第一个参数进行转换(液化天然气).作为第二个论点(np),该函数接收一个指向十进制变量的指针,该变量应保存操作结果。

函数在成功时返回0,如果转换失败则返回负值。

德克迪夫

除以两个十进制类型的变量。

int decdiv(decimal *n1, decimal *n2, decimal *result);

函数接收指向第一个变量的指针(n1)第二个呢(n2)操作数和计算n1/n2. 后果是指向应保存操作结果的变量的指针。

成功时,返回0,如果除法失败,则返回负值。如果发生溢出或下溢,函数返回ECPG_INFORMIX_NUM_溢出ECPG_INFORMIX_NUM_下溢分别地如果观察到被零除的尝试,函数将返回ECPG_INFORMIX_DIVIDE_ZERO.

德克穆尔

将两个十进制值相乘。

int decmul(decimal *n1, decimal *n2, decimal *result);

函数接收指向第一个变量的指针(n1)第二个呢(n2)操作数和计算n1*n2. 后果是指向应保存操作结果的变量的指针。

成功时,返回0,如果乘法失败,则返回负值。如果发生溢出或下溢,函数返回ECPG_INFORMIX_NUM_溢出ECPG_INFORMIX_NUM_下溢分别地

德克苏布

用一个十进制值减去另一个十进制值。

int decsub(decimal *n1, decimal *n2, decimal *result);

函数接收指向第一个变量的指针(n1)第二个呢(n2)操作数和计算n1-n2. 后果是指向应保存操作结果的变量的指针。

成功时,返回0,如果减法失败,则返回负值。如果发生溢出或下溢,函数返回ECPG_INFORMIX_NUM_溢出ECPG_INFORMIX_NUM_下溢分别地

十二月

将十进制类型的变量转换为C字符中的ASCII表示形式*一串

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

函数接收指向decimal类型变量的指针(np)它转换为文本表示。内容提供商应该保存操作结果的缓冲区。参数正当指定输出中小数点右侧的位数。结果将四舍五入到这个小数位数。背景正当to-1表示输出中应包含所有可用的十进制数字。如果输出缓冲区的长度由伦恩不足以保存文本表示,包括尾随的零字节,只有一个*字符存储在结果中,并返回-1.

如果缓冲区内容提供商太小或太小ECPG_INFORMIX_内存不足如果记忆耗尽。

十二月

将decimal类型的变量转换为double。

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

函数接收指向要转换的十进制值的指针(np)以及一个指向应该保存操作结果的双变量的指针(dblp).

如果转换成功,则返回0,如果转换失败,则返回负值。

十进位

将变量转换为十进制类型,并将其转换为整数。

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

函数接收指向要转换的十进制值的指针(np)以及一个指向整数变量的指针,该整数变量应包含运算结果(知识产权).

如果转换成功,则返回0,如果转换失败,则返回负值。如果发生溢出,ECPG_INFORMIX_NUM_溢出被退回。

请注意,ECPG实现与Informix实现不同。Informix将整数限制在-32767到32767之间,而ECPG实现中的限制取决于体系结构(INT_MIN。。INT_MAX).

十点钟

将decimal类型的变量转换为长整数。

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

函数接收指向要转换的十进制值的指针(np)以及一个指向长变量的指针,该变量应该保存操作的结果(lngp).

如果转换成功,则返回0,如果转换失败,则返回负值。如果发生溢出,ECPG_INFORMIX_NUM_溢出被退回。

请注意,ECPG实现与Informix实现不同。Informix将长整数限制在-2147483647到2147483647之间,而ECPG实现中的限制取决于体系结构(-朗·麦克斯。。朗普马克斯).

rdatestr

将日期转换为C字符*一串

int rdatestr(date d, char *str);

该函数接收两个参数,第一个是要转换的日期(d)第二个是指向目标字符串的指针。输出格式始终为日期格式,因此需要为字符串分配至少11个字节(包括零字节终止符)。

函数成功时返回0,错误时返回负值。

请注意,ECPG的实现与Informix实现不同。在Informix中,设置环境变量会影响格式。但是,在ECPG中,不能更改输出格式。

rstrdate

解析日期的文本表示。

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

函数接收要转换的日期的文本表示(str)以及指向日期类型变量的指针(d).此函数不允许您指定格式掩码。它使用Informix的默认格式掩码,即年月日.在内部,该功能通过rdefmtdate因此rstrdate不是更快,如果你有选择,你应该选择rdefmtdate它允许您明确指定格式掩码。

该函数返回的值与rdefmtdate.

今天

获取当前日期。

void rtoday(date *d);

函数接收指向日期变量的指针(d)将其设置为当前日期。

在内部,该函数使用今天是你的生日作用

鲁姆迪

从日期类型的变量中提取日期、月份和年份的值。

int rjulmdy(date d, short mdy[3]);

函数接收日期d以及指向3个短整数值数组的指针麦迪.变量名表示顺序:mdy[0]将设置为包含月份的编号,mdy[1]将设置为当天的值mdy[2]将包含全年。

函数此时总是返回0.

函数在内部使用PGTYPESdate_julmdy作用

rdefmtdate

使用格式掩码将字符串转换为日期类型的值。

int rdefmtdate(date *d, char *fmt, char *str);

该函数接收一个指向应该保存操作结果的日期值的指针(d),用于解析日期的格式掩码(fmt)还有C字符*包含日期文本表示形式的字符串(str).文本表示形式应与格式掩码匹配。但是,不需要将字符串与格式掩码进行1:1映射。该函数只分析顺序并查找文字yy年份这表明了今年的形势,表示月份的位置,以及dd指示当天的位置。

该函数返回以下值:

  • 0-函数已成功终止。

  • ECPG_INFORMIX_ENOSHORTDATE-日期不包含日期、月份和年份之间的分隔符。在这种情况下,输入字符串的长度必须正好为6或8字节,但不是。

  • ECPG_INFORMIX_enotdmay-格式字符串未正确指示年、月和日的顺序。

  • ECPG_INFORMIX_BAD_DAY-输入字符串不包含有效的日期。

  • ECPG_INFORMIX_BAD_MONTH-输入字符串不包含有效的月份。

  • ECPG_INFORMIX_BAD_YEAR-输入字符串不包含有效的年份。

    在内部,该功能的实现是为了使用PGTYPESdate_defmt_asc作用有关示例输入的表格,请参见此处的参考资料。

rfmtdate

使用格式掩码将日期类型的变量转换为其文本表示形式。

int rfmtdate(date d, char *fmt, char *str);

函数接收要转换的日期(d),格式掩码(fmt)以及保存日期文本表示形式的字符串(str).

成功时,将返回0,如果发生错误,则返回负值。

在内部,该函数使用PGTYPESdate_fmt_asc函数,请参见此处的参考以获取示例。

rmdyjul

从指定日期的日期、月份和年份的3个短整数数组中创建日期值。

int rmdyjul(short mdy[3], date *d);

函数接收3个短整数的数组(麦迪)以及一个指向date类型的变量的指针,该变量应保存操作的结果。

当前,该函数始终返回0.

在内部实现该函数以使用该函数PGTYPESdate_mdyjul.

星期五

为日期值返回一个代表一周中某一天的数字。

int rdayofweek(date d);

函数接收日期变量d作为其唯一参数,并返回一个整数,该整数指示该日期的星期几。

  • 0-周日

  • 1-星期一

  • 2-星期二

  • 3-星期三

  • 4-周四

  • 5-周五

  • 6-周六

    在内部实现该函数以使用该函数PGTYPESdate_dayofweek.

数据流

检索当前时间戳。

void dtcurrent(timestamp *ts);

函数检索当前时间戳并将其保存到ts指向。

dtcvasc

将时间戳从其文本表示形式解析为时间戳变量。

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

函数接收要分析的字符串(str)以及指向应该保存操作结果的时间戳变量的指针(ts).

函数成功时返回0,错误时返回负值。

在内部,该函数使用PGTYPEStimestamp_来自asc作用有关输入示例的表格,请参见此处的参考资料。

dtcvfmtasc

使用格式掩码将时间戳从其文本表示形式解析为时间戳变量。

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

函数接收要分析的字符串(输入存储器),要使用的格式掩码(fmtstr)以及指向应该保存操作结果的时间戳变量的指针(dtvalue).

此功能通过PGTYPEStimestamp_defmt_asc作用有关可使用的格式说明符的列表,请参阅文档。

函数成功时返回0,错误时返回负值。

dtsub

从另一个时间戳中减去一个时间戳,并返回一个interval类型的变量。

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

该函数将减去ts2从timestamp变量中指向ts1指向并将结果存储在四、指向。

成功后,如果发生错误,函数将返回0和负值。

dttoasc

将时间戳变量转换为C字符*一串

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

函数接收指向要转换的时间戳变量的指针(ts)以及应该保存操作结果的字符串(输出).它改变了信仰ts根据SQL标准对其进行文本表示,即YYYY-MM-DD HH:MM:SS.

成功后,如果发生错误,函数将返回0和负值。

dttofmtasc

将时间戳变量转换为C字符*使用格式掩码。

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

函数接收指向要转换的时间戳的指针作为其第一个参数(ts),指向输出缓冲区的指针(输出),为输出缓冲区分配的最大长度(斯特鲁伦)以及用于转换的格式掩码(fmtstr).

成功后,如果发生错误,函数将返回0和负值。

在内部,此函数使用PGTYPEStimestamp_fmt_asc作用有关可以使用何种格式掩码说明符的信息,请参阅参考资料。

英托阿斯克

将区间变量转换为C字符*一串

int intoasc(interval *i, char *str);

函数接收指向要转换的间隔变量的指针()以及应该保存操作结果的字符串(str).它改变了信仰根据SQL标准对其进行文本表示,即YYYY-MM-DD HH:MM:SS.

成功后,如果发生错误,函数将返回0和负值。

rfmtlong

使用格式掩码将长整数值转换为其文本表示形式。

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

函数接收长值液化天然气,格式掩码fmt以及指向输出缓冲区的指针爆发。它根据格式掩码将长值转换为其文本表示形式。

格式掩码可以由以下指定字符的格式组成:

  • *(星号)-如果该位置为空,则用星号填充。

  • &(符号)-如果此位置为空,则用零填充。

  • #-将前导零变成空格。

  • <-左对齐字符串中的数字。

  • ,(逗号)-将四位或四位以上的数字分组为三位数字,并用逗号分隔。

  • .(句号)-此字符将数字的整数部分与小数部分分开。

  • -(减号)-如果数字为负值,则会出现减号。

  • +(加号)-如果数字为正值,则会显示加号。

  • (-这将替换负数前面的减号。减号不会出现。

  • )-此字符替换负号,并打印在负值后面。

  • $-货币符号。

rupshift

将字符串转换为大写。

void rupshift(char *str);

该函数接收指向字符串的指针,并将每个小写字符转换为大写字符。

拜伦

返回字符串中的字符数,不计算尾随空格。

int byleng(char *str, int len);

函数需要一个固定长度的字符串作为其第一个参数(str)它的长度是它的第二个参数(伦恩)。它返回有效字符数,即不带尾随空格的字符串长度。

ldchar

将固定长度的字符串复制到以null结尾的字符串中。

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

函数接收要复制的固定长度字符串(src),它的长度(伦恩)以及指向目标内存的指针(目的地).请注意,您至少需要预订len+1字节的字符串目的地指向。函数最多只能复制伦恩字节添加到新位置(如果源字符串有尾随空格,则减少),并添加空终止符。

味精

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

此功能存在,但目前尚未实现!

塞特努尔

将变量设置为NULL。

int rsetnull(int t, char *ptr);

该函数接收一个指示变量类型的整数和一个指向变量本身的指针,该指针被转换为C字符*指针。

存在以下类型:

  • CCHARTYPE-对于类型为烧焦炭*

  • CSHORTTYPE-对于类型为短整型

  • CINTTYPE- 对于类型的变量整数

  • CBOOLTYPE- 对于类型的变量布尔值

  • CFLOATTYPE- 对于类型的变量漂浮

  • 克隆型- 对于类型的变量

  • CDOUBLETYPE- 对于类型的变量双倍的

  • CDECIMALTYPE- 对于类型的变量十进制

  • CDATETYPE- 对于类型的变量日期

  • CDTIMETYPE- 对于类型的变量时间戳

    下面是一个调用这个函数的例子:

$char c[] = "abc       ";
$short 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);

该函数接收要测试的变量的类型 () 以及指向该变量的指针 (指针).请注意,后者需要转换为char*.查看函数塞特努尔查看可能的变量类型列表。

以下是如何使用此功能的示例:

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

risnull(CCHARTYPE, (char *) c);
risnull(CSHORTTYPE, (char *) &s);
risnull(CINTTYPE, (char *) &i);

# 36.15.5.附加常数

请注意,这里的所有常量都描述了错误,所有这些常量都被定义为表示负值。在不同常量的描述中,您还可以找到这些常量在当前实现中表示的值。然而,你不应该依赖这个数字。然而,你可以依赖这样一个事实:它们都被定义为代表负值。

ECPG_INFORMIX_NUM_溢出

如果计算中发生溢出,函数将返回此值。在内部,它被定义为-1200(Informix定义)。

ECPG_INFORMIX_NUM_下溢

如果计算中出现下溢,函数将返回此值。内部定义为-1201(Informix定义)。

ECPG_INFORMIX_DIVIDE_ZERO

如果观察到尝试除以零,函数将返回此值。内部定义为-1202(Informix定义)。

ECPG_INFORMIX_BAD_YEAR

如果在分析日期时发现某一年的值不正确,函数将返回此值。内部定义为-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_内存不足

如果操作期间内存耗尽,函数将返回此值。内部定义为-1211(Informix定义)。

ECPG_INFORMIX_enotdmay

如果解析例程应该获得格式掩码(如)但并非所有字段都正确列出。内部定义为-1212(Informix定义)。

ECPG_INFORMIX_BAD_NUMERIC

如果解析例程因包含错误而无法解析数值的文本表示形式,或者例程因至少一个数值变量无效而无法完成涉及数值变量的计算,则函数返回此值。内部定义为-1213(Informix定义)。

ECPG_INFORMIX_BAD_指数

如果解析例程无法解析指数,函数将返回此值。内部定义为-1216(Informix定义)。

ECPG_INFORMIX_BAD_DATE

如果解析例程无法解析日期,函数将返回此值。内部定义为-1218(Informix定义)。

ECPG_INFORMIX_额外_CHARS

如果解析例程被传递了无法解析的额外字符,函数将返回此值。内部定义为-1264(Informix定义)。