返回首页

gbase数据、南大通用产品文档:GBase8sifx_int8soint() 函数

更新日期:2024年09月11日


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 763 -
ifx_int8soint() 函数将 int8 类型数值转换为 C int 类型数值。
语法
mint ifx_int8soint(int8_val, int_val)
ifx_int8_t *int8_val;
mint *int_val;
int8_val
指向 ifx_int8soint() 将其值转换为 mint 类型值的 int8 结构的指针。
int_val
指向 ifx_int8soint() 放置转换的结果处的 mint 值的指针。

用法
ifx_int8soint() 库函数将 int8 值转换为 C 整数。C 整数的大小依赖于您正在使用的
计算机的硬件和操作系统。因此,ifx_int8soint() 函数将整数值与 SQL SMALLINT 数据类
型同等看待。SMALLINT 的有效范围在 32767 与 -32767 之间。要将较大的 int8 值转换
为较大的整数,请使用 ifx_int8solong() 库函数。

返回代码
0
转换成功。
<0
转换失败。

示例
demo 目录中的文件 int8soint.ec 包含下列样例程序。
/*
* ifx_int8soint.ec *
The following program converts three strings to INT8 types and
converts the INT8 type values to C integer type values.
Then the values are displayed.

*/


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 764 -
#include

EXEC SQL include "int8.h";

char string1[] = "-12,555";
char string2[] = "480";
char string3[] = "5.2";

main()
{
mint x;
mint i =0;
ifx_int8_t num1, num2, num3;

printf("IFX_INT8sOINT 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);
}
printf("\nConverting INT8 to integer\n");
if (x= ifx_int8soint(&num1, &i))
{

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 765 -
printf("\tError %d in converting INT8 to integer\n", x);
exit(1);
}
else
{
printf("String 1= %s\n", string1);
printf("INT8 value is = %d\n", i);
}
printf("\nConverting second INT8 to integer\n");
if (x= ifx_int8soint(&num2, &i))
{
printf("\tError %d in converting INT8 to integer\n", x);
exit(1);
}
else
{
printf("String2 = %s\n", string2);
printf("INT8 value is = %d\n", i);
}
printf("\nConverting third INT8 to integer\n");

/* note that the decimal will be truncated */

if (x= ifx_int8soint(&num3, &i))
{
printf("\tError %d in converting INT8 to integer\n", x);
exit(1);
}
else
{
printf("String3 = %s\n", string3);
printf("INT8 value is = %d\n",i);
}

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 766 -
printf("\nIFX_INT8sOINT Sample Program over.\n\n");
exit(0);
}
输出
IFX_INT8sOINT Sample ESQL Program running.
Converting INT8 to integer

Executing: ifx_int8soint(&num1,&i)
String 1= -12,555
The value of the first integer is = -12555


Converting second INT8 to integer

Executing: ifx_int8soint(&num2, &i)
String2 = 480
The value of the second integer is = 480


Converting third INT8 to integer

Executing: ifx_int8soint(&num3, &i)
String3 = 5.2
The value of the third integer is = 5
IFX_INT8sOINT Sample Program over.

如果用户在APP 的开发中,使用了连接池机制,那么需要遵循如下规范:

如果在连接中设置了GUC 参数,那么在将连接归还连接池之前,必须使用“SET
SESSION AUTHORIZATION DEFAULT;RESET ALL;”将连接的状态清空。

如果使用了临时表,那么在将连接归还连接池之前,必须将临时表删除。
否则,
连接池里面的连接就是有状态的,
会对用户后续使用连接池进行操作的正确性带
来影响。
兼容性原则:

新驱动前向兼容数据库,若需使用驱动与数据库同步增加的新特性,必须升级数据库。

behavior_compat_options='proc_outparam_override' 重载参数仅在A 兼容模式可用。


Hash 列字段在使用过程中禁止加类似LTRIM 等函数处理操作,这样做会破
坏hash 分布,必须去掉,由外部保证字段数据的正确性。
例如:字段col1 在GROUP BY、INSERT INTO SELECT 投影列中对col1 加
的RTRIM、LTRIM 破坏了hash 分布,必须去掉。

GROUP BY 语句如果含有hash 列,将hash 列放在最前面。

多个JOIN 列如果有hash 列JOIN 的,将hash 列JOIN 放到最前面。