返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

打开表
在对象资源管理器中,展开“表”节点,右键点击需要查看的表,再点击
“打开表”。 如下图所示:

图 4-11
在打开的窗口就是表的内容。

ifx_int8toflt() 函数将 int8 类型数值转换为 C float 类型数值。
语法
mint ifx_int8toflt(int8_val, flt_val)
ifx_int8_t *int8_val;
float *flt_val;
int8_val
指向 ifx_int8toflt() 将其值转换为 float 类型值的 int8 结构的指针。
flt_val
指向 ifx_int8toflt() 放置转换的结果处的 float 值的指针。

用法
ifx_int8toflt() 库函数将 int8 值转换为 C float。
C float 的大小依赖于您正在使用的计
算机的硬件和操作系统。

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

示例
demo 目录中的文件 int8toflt.ec 包含下列样例程序。
/*
* ifx_int8toflt.ec *

The following program converts three strings to
INT8 values and then to float values and

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

displays the results.

*/

#include

EXEC SQL include "int8.h";

char string1[] = "-12,555.765";
char string2[] = "480.76";
char string3[] = "5.2";

main()
{
mint x;
float f =0.0;
ifx_int8_t num1, num2, num3;

printf("\nIFX_INT8tOFLT 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_int8toflt(&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_int8toflt(&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_int8toflt(&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_INT8tOFLT Sample Program over.\n\n");
exit(0);
}
输出
IFX_INT8tOFLT Sample ESQL Program running.

Converting INT8 to float

Executing: ifx_int8toflt(&num1,&f)
String 1= -12,555.765
The value of the first float is = -12555.000000


Converting second INT8 to float

Executing: ifx_int8toflt(&num2, &f)
String2 = 480.76
The value of the second float is = 480.000000


Converting third INT8 to integer

Executing: ifx_int8toflt(&num3, &f)
String3 = 5.2
The value of the third float is = 5.000000
IFX_INT8tOFLT Sample Program over.

使用 DIRECT_IO 配置参数来控制用于 dbspace chunk 的熟文件直接 I/O。
该参数在 UNIX™ 平台上启用直接 I/O (绕过文件系统缓冲)或在 AIX® 操作系统上启
用并发 IO(绕过文件系统缓冲和不必要的写串行化。)
onconfig.std 值

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 62 -
DIRECT_IO 0

0 = 不使用直接 I/O 或并发 I/O
1 = 如果可以使用,则直接 I/O,绕过文件系统缓冲
2 = 在 AIX 操作系统上启用并发 I/O(并发 I/O 选项包括直接 I/O 和并发 I/O。)
生效
编辑 onconfig 文件并重启数据库服务器之后。
用法
直接 I/O 仅可用于 dbspace chunk,其文件系统支持页大小的直接 I/O。
通过使用直接 I/O,您能减少 AIO 虚拟处理器的数目。
如果启用直接 I/O,则使用文件系统支持的 KAIO(内核异步 I/O)。然而,如果设置环境
变量 KAIOOFF,则不使用 KAIO。当直接 IO 和 KAIO 都使用时,可减少 AIO 虚拟处
理器的数目。如果使用直接 IO,但不使用 KAIO,则不应减少 AIO 虚拟处理器的数目。
对于用作临时 dbspace chunk 的熟文件,GBase 8s 不使用直接或并发 I/O。
在 AIX 上,如果 GBase 8s 使用 chunk 的并发 I/O,则另一个程序(比如一个联机外部
备份程序)必须也使用并发 I/O。否则,文件打开操作将失败。
如果 GBase 8s 使用 chunk 的直接 I/O,且另一个程序试图不使用直接 I/O 来打开该
chunk,则打开操作正常成功,但可发生性能损失。之所以发生损失,是因为文件系统可能
试图确保每个打开操作查看相同的文件数据,或者通过在冲突打开操作期间根本不使用直
接 I/O,或者通过在每次直接 I/O 前清空文件系统高速缓存并在每次直接写之后使文件系
统高速缓存无效。
在 Windows™ 平台上使用 dbspace chunk 的直接 I/O,
与 DIRECT_IO 配置参数的值无关。