main() { mint x; float f =0.0; ifx_int8_t num1, num2, num3;
printf("\nIFX_INT8sOFLT Sample ESQL Program running.\n\n"); if (x = ifx_int8cvasc(string1, strlen(string1), &num1)) { printf("Error %d in converting string1 to INT8\n", x); exit(1); } if (x = ifx_int8cvasc(string2, strlen(string2), &num2)) { printf("Error %d in converting string2 to INT8\n", x); exit(1); } if (x = ifx_int8cvasc(string3, strlen(string3), &num3)) { printf("Error %d in converting string3 to INT8\n", x); exit(1);
GBase 8s ESQL/C 编程指南 南大通用数据技术股份有限公司 - 761 - }
printf("\nConverting INT8 to float\n"); if (x= ifx_int8soflt(&num1, &f)) { printf("\tError %d in converting INT8 to float\n", x); exit(1); } else { printf("String 1= %s\n", string1); printf("INT8 value is = %f\n", f); } printf("\nConverting second INT8 to float\n"); if (x= ifx_int8soflt(&num2, &f)) { printf("\tError %d in converting INT8 to float\n", x); exit(1); } else { printf("String2 = %s\n", string2); printf("INT8 value is = %f\n", f); } printf("\nConverting third INT8 to integer\n");
/* Note that the decimal places will be truncated */
if (x= ifx_int8soflt(&num3, &f)) { printf("\tError %d in converting INT8 to float\n", x); exit(1); }
GBase 8s ESQL/C 编程指南 南大通用数据技术股份有限公司 - 762 - else { printf("String3 = %s\n", string3); printf("INT8 value is = %f\n",f); } printf("\nIFX_INT8sOFLT Sample Program over.\n\n"); exit(0); } 输出 IFX_INT8sOFLT Sample ESQL Program running.
Converting INT8 to float
Executing: ifx_int8soflt(&num1,&f) String 1= -12,555.765 The value of the first float is = -12555.000000
Converting second INT8 to float
Executing: ifx_int8soflt(&num2, &f) String2 = 480.76 The value of the second float is = 480.000000
Converting third INT8 to integer
Executing: ifx_int8soflt(&num3, &f) String3 = 5.2 The value of the third float is = 5.000000 IFX_INT8sOFLT Sample Program over.
SERIAL 数据类型存储 INT 数据类型的顺序整数 (在插入新行时由数据库服务器自动 指定)。 缺省顺序起始号为 1,但可以在创建或改变表时指定初始值 n。 您可以指定正数或负数作为起始号。 如果您指定零 (0) 作为起始号, 那么使用的值是 SERIAL 列中已存在的最大正值 + 1。 SERIAL 的最大值是 2,147,483,647。如果指定大于 2,147,483,647 的数,那么会接 收到语法错误。如果需要更大的范围,那么使用 SERIAL8 或 BIGSERIAL 数据类型,而不 是 SERIAL。 一个表只能有一个 SERIAL 列, 但是它可以具有一个 SERIAL 列和一个 SERIAL8 列或 BIGSERIAL 列。 列中的 SERIAL 值并不是自动唯一。必须对此列应用唯一索引或主键约束以防止重复 的 SERIAL 数。如果您在 DB-Access 中使用 Interactive Schema Editor 来定义该表, 那么唯一索引将自动应用于 SERIAL 列。 SERIAL 数可能不连续,原因是存在并发的用户、回滚和其他因素。 如果 column 是 SERIAL 数据类型,那么用于间接输入的 SPL 的 DEFINE variable LIKE column 语法声明 INTEGER 数据类型的变量。
在指定了数字之后, 就不能进行更改。 您可以将值插入 SERIAL 列中 (使用 INSERT 语 句) , 或如果新值与列中的任何现有值都不重复, 也可以重置 serial 列 (使用 ALTER TABLE 语句)。要将值插入到 SERIAL 列中,数据库服务器会使前面的值增加 1(如果复位值较 大的话,那么将复位值增加 1)并将结果指定为输入值。但是,如果 ALTER TABLE 已经将 SERIAL 列的下一个值复位为小于该列中已存在的值,那么下一个值将遵循以下公式: (SERIAL 列中的最大现有值) + 1 例如, 当最大现有值为 128 时, 如果将 customer.customer_num 的序号值复位为 50, 那么下一个指定数将为 129。 有关 SERIAL 数据条目的更多详细信息, 请参阅 GBase 8s SQL 指南:语法。 SERIAL 列可以存储唯一代码, 例如, 订单、 发票或客户编号。 SERIAL 数据值需要 4 个