返回首页

gbase数据、南大通用产品文档:GBase8s执行本地访存

更新日期:2024年09月11日

GBase 8s ODBC Driver从客户端计算机的一个位置检索行或集合到客户端计算机上的另一
个位置时,执行本地访存。
本地访存在 SQL 数据转换上具有以下限制:
 GBase 8s ODBC Driver无法转换在数据库服务器上强制转型函数的扩展数据类型。
 GBase 8s ODBC Driver无法将一个命名行类型转换为另一种类型。只有数据库服务器
可以执行此类型的转换。
 在检索整个行或集合时,
GBase 8s ODBC Driver 无法转换 SQL 数据类型。
因此,

有在源和目标的内部结构相同或者目标是不固定型缓冲区时,GBase 8s ODBC Driver
可以执行整个行或集合的本地访存。
例如,如果您将本地集合定义为 list (char(1) not null),数据库服务器可以将 list (int
not null)值从数据库服务器放到本地集合中。在此操作期间,数据库服务器将每个整
数转换为字符串,
并建立新的列表返回到客户端计算机。
在将本地整数列表检索到字
符列表时,不能在客户端计算机上执行此操作。
执行本地访存:
1.
调用 ifx_rc_create() 分配一个行或集合缓冲区。
2.
调用 SQLBindCol() 绑定缓冲区来处理本地行或集合。
3.
执行 SELECT 语句将行或集合数据传输到本地缓冲区。
4.
对于行或集合中的每一个元素,调用 ifx_rc_fetch() 将值复制到缓冲区。
5.
使用行或集合缓冲区。
6.
调用 ifx_rc_free() 释放缓冲区。

dcf_mec_batch_size
参数说明:DCF 通信批量消息数,数值为0 时,DCF 会根据网络以及写入数据量自适

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1437
应调整,参数重启生效。
该参数属于POSTMASTER 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:整型,0~1024
默认值:0


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 851 -
对于 内部 DATE,rdayofweek() 函数返回星期几作为整数值。

语法

mint rdayofweek(jdate)
int4 jdate;
jdate
日期的内部表示。

返回代码
0
星期日
1
星期一
2
星期二
3
星期三
4
星期四
5
星期五
6
星期六

示例
demo 目录在 rdayofweek.ec 文件中包含此样例程序。
/*
* rdayofweek.ec *

The following program accepts a date entered from the console.
*/

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

#include

main()
{
mint errnum;
int4 i_date;
char *day_name;
char date[20];
int x;

static char fmtstr[9] = "mmddyyyy";

printf("RDAYOFWEEK Sample ESQL Program running.\n\n");

/* Allow user to enter a date */
printf("Enter a date as a single string, month.day.year\n");
gets(date);

printf("\nThe date string is %s.\n", date);

/* Put entered date in internal format */
if (x = rdefmtdate(&i_date, fmtstr, date))
printf("Error %d on rdefmtdate conversion\n", x);
else
{
/* Figure out what day of the week i_date is */
switch (rdayofweek(i_date))
{
case 0: day_name = "Sunday";
break;
case 1: day_name = "Monday";
break;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 853 -
case 2: day_name = "Tuesday";
break;
case 3: day_name = "Wednesday";
break;
case 4: day_name = "Thursday";
break;
case 5: day_name = "Friday";
break;
case 6: day_name = "Saturday";
break;
}
printf("This date is a %s.\n", day_name);
}

printf("\nRDAYOFWEEK Sample Program over.\n\n");
}
输出
RDAYOFWEEK Sample ESQL Program running.

Enter a date as a single string, month.day.year
10.13.07

The date string is 10.13.07.
This date is a Saturday.
RDAYOFWEEK Sample Program over.