返回首页

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

更新日期:2024年09月11日

 摘要:
该函数用于为当前连接设置默认的字符集。
 语法:

GBase 8a 程序员手册C API 篇


- 44 -

南大通用数据技术股份有限公司
int gbase_set_character_set(GBASE*gbase, const char *csname)
 参数:

gbase

数据库句柄

csname
字符集名称,取值'gbk', 'utf8'。
 返回值:
0 表示成功,非0 值表示出现错误。

ifx_int8soasc() 函数将 int8 类型数值转换为 C char 类型值。
语法

mint ifx_int8soasc(int8_val, strng_val, len)
ifx_int8_t *int8_val;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 747 -
char *strng_val;
mint len;
int8_val
指向 ifx_int8soasc() 将其值转换为文本字符串的 int8 结构的指针。
strng_val
指向 ifx_int8soasc() 放置文本字符串处的字符缓冲区的第一个字节的指针。
len
以字节计算的 strng_val 的大小,对于空终止符,为负 1。
用法
如果 int8 数值不适于放入长度 len 的字符串内,则 ifx_int8soasc() 将该数值转换为
指数计数法。如果该值仍不适合,则 ifx_int8soasc() 以星号填充字符串。 如果该数值比字
符串短,则 ifx_int8soasc() 向左对齐该数值,并用空格填充它的右边。
由于 ifx_int8soasc() 返回的字符串不是以空终止的,因此,在您打印它之前,您必须
将空字符添加到该字符串。
当您使用非缺省的语言环境(US English 之外的一种)时,ifx_int8soasc() 支持
strng_val 字符串中的非 ASCII 字符。要获取更多信息,
返回代码
0
转换成功。
-1207
被转换的值不适于放入分配了的空间内。
示例
demo 目录中的文件 int8soasc.ec 包含下列样例程序。
/*
* ifx_int8soasc.ec *

The following program converts three string
constants to INT8 types and then uses ifx_int8soasc()
to convert the INT8 values to C char type values.
*/

#include
#define END sizeof(result)

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

EXEC SQL include "int8.h";

char string1[] = "-12,555,444,333,786,456";
char string2[] = "480";
char string3[] = "5.2";
char result[40];

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

printf("IFX_INT8sOASC 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 back to ASCII\n");
printf(" Executing: ifx_int8soasc(&num1, result, END - 1)");
if (x = ifx_int8soasc(&num1, result, END - 1))

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 749 -
printf("\tError %d in converting INT8 to string\n", x);
else
{
result[END - 1] = '\0'; /* null terminate */
printf("\n The value of the first INT8 is = %s\n", result);
}
printf("\nConverting second INT8 back to ASCII\n");
printf(" Executing: ifx_int8soasc(&num2, result, END - 1)");
if (x= ifx_int8soasc(&num2, result, END - 1))
printf("\tError %d in converting INT8 to string\n", x);
else
{
result[END - 1] = '\0'; /* null terminate */
printf("\n The value of the 2nd INT8 is = %s\n", result);
}

printf("\nConverting third INT8 back to ASCII\n");
printf(" Executing: ifx_int8soasc(&num3, result, END - 1)");
/* note that the decimal is truncated */

if (x= ifx_int8soasc(&num3, result, END - 1))
printf("\tError %d in converting INT8 to string\n", x);
else
{
result[END - 1] = '\0'; /* null terminate */
printf("\n The value of the 3rd INT8 is = %s\n", result);
}
printf("\nIFX_INT8sOASC Sample Program over.\n\n");
exit(0);
}
输出

IFX_INT8sOASC Sample ESQL Program running.

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


Converting INT8 back to ASCII
Executing: ifx_int8soasc(&num1, result, sizeof(result)-1)
The value of the first INT8 is = -12555444333786456

Converting second INT8 back to ASCII
Executing: ifx_int8soasc(&num2, result, sizeof(result)-1)
The value of the 2nd INT8 is = 480

Converting third INT8 back to ASCII
Executing: ifx_int8soasc(&num3, result, END)
The value of the 3rd INT8 is = 5

(SQL 管理 API)
随同 admin() 或 task() 函数,使用 onmode 和 C 参数来控制 B-tree 扫描程序清除已
删除条目的索引。
语法

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


元素
描述
关键考虑
alice_mode
系统的 alice 模式。 从 0(OFF)至 12 范围内的有效整数值。
compression_level
对于数据库服务器实
例,
两个部分地已使用
索引页的合并级别。

果那些页上的数据总
数达到设置的级别,

合并页。
级别的有效值为 low、
med(中级)

high 和
default。系统缺省值为 med。
dur_num
热列表有效的秒数。
这个秒数期满后,即使列表上有未处理的条
目,也由下一个可用的 B-tree 扫描程序线
程重建热列表。正在处理请求的扫描程序不
中断。
range_size
在启用索引范围清除
之前索引的大小。
可用大小 -1 来禁用范围扫描。
start_count
要启动的 B-tree 扫
描程序线程数。
如未指定 start_count,则再启动一个线程。
同时最多可启动 32 个线程。但是,同时运
行的扫描程序线程数没有限制。
stop_count
要停止的 B-tree 扫
描程序线程数。
如未指定 stop_count,则停止单个线程。停
止所有索引扫描程序防止所有索引清除。
如果您指定一个比正在运行的线程数更大的
stop_count 值,则不发出错误提示,但是停
止所有扫描程序线程。
thresh_size
在索引置于热列表上
之前,
索引必须遇到的
在阈值之上的所有索引都已清除,且没有
B-tree 扫描程序要做的其他工作之后,阈值

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

元素
描述
关键考虑
删除条目的最小数。
之下的索引被添加到热列表。

用法
B-tree 扫描程序有统计信息,追踪索引效率以及索引在服务器上增添了多少额外工作。根
据因为提交的删除索引条目索引已经完成的额外工作量,
B-tree 扫描程序开发一个导致服
务器做额外工作的索引的排序列表,
称为热列表。
首先清除索引导致的额外工作的最高量,
并以递减的顺序清除剩余的索引。DBA 可动态地分配清除线程来配置工作负载。
这个函数等同于 onmode -C 命令。
示例
下列命令启动 60 个 B-tree 扫描程序线程:
EXECUTE FUNCTION admin("onmode","C","start","30");
EXECUTE FUNCTION admin("onmode","C","start","30");
下列命令停止所有这些线程:
EXECUTE FUNCTION admin("onmode","C","stop","30000");
当 stop_count 值大于正在运行的线程数时,不发出错误提示。