返回首页

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

更新日期:2024年09月11日


函数原型:
sword GCILobWrite(DCISvcCtx *svchp,
DCIError *errhp,
DCILobLocator *locp,
ub4 *amtp,
ub4 *offset,
dvoid *bufp,
ub4 buflen,
ub1 piece,
dvoid *ctxp,
sb4 (*cbfp)(dvoid *ctxp,dvoid *bufp,ub4 *len,ub1 *piece),
ub2 csid,
ub1 csfrm);
功能描述:

连续的写入内容到一个大字段的存储描述符中。
参数说明:
svchp(in):上下文句柄指针
errhp(in):错误信息句柄,该接口调用失败时,错误信息会保存在错误句柄中。
locp(in):存储大字段描述符指针
amtp(in/out):该参数为输入输出参数,当调用函数时,该参数表明想写入的字节数,当函



数执行完成后,GCI 会回填实际写入的字节数。
offset(in):从大字段开始位置到当前位置的偏移量,以字节为单位
bufp(in):存放要写的数据缓冲区指针
bufl(in):bufp 参数指向的缓冲区大小
piece:保留参数,目前不适用(仅用于和Oracle 调用保持兼容)
ctxp:保留参数,目前不适用(仅用于和Oracle 调用保持兼容)
cbfp: 保留参数,目前不适用(仅用于和Oracle 调用保持兼容)
csid: 保留参数,目前不适用(仅用于和Oracle 调用保持兼容)
csfrm: 保留参数,目前不适用(仅用于和Oracle 调用保持兼容)
返回值:如果执行成功,返回GCI_SUCCESS,否则返回GCI_ERROR。
注:可以调用GCIStmtFetch 来移动游标,以便对其他行的大字段进行写入操作。

函数说明
返回date 的周数。
表5- 29 参数说明

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
837
参数名称


date
取值范围为1~53。
WEEKOFYEAR(date)
等价于WEEK(date,3)。
示例
示例1:返回“2020-08-30”对应的是2020 年的第几周。
gbase> SELECT WEEKOFYEAR('2020-08-30') FROM dual;
+--------------------------+
| WEEKOFYEAR('2020-08-30') |
+--------------------------+
|
35 |
+--------------------------+
1 row in set

ifx_int8tub() 函数将两个 int8 类型值相减。
语法
mint ifx_int8tub(n1, n2, difference)
ifx_int8_t *n1;
ifx_int8_t *n2;
ifx_int8_t *difference;
n1
指向包含第一个运算对象的 int8 结构的指针。
n2
指向包含第二个运算对象的 int8 结构的指针。
difference
指向包含 n1 与 n2 的差(n1 - n2)的 int8 结构的指针。

用法

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

difference 可与 n1 或 n2 相同。

返回代码
0
减法成功。
-1284
减法导致溢出或下溢。
示例
demo 目录中的文件 int8tub.ec 包含下列样例程序。
/*
*int8tub.ec *

The following program obtains the difference of two INT8 type values.
*/

#include

EXEC SQL include "int8.h";

char string1[] = "6";
char string2[] = "9,223,372,036,854,775";
char string3[] = "999,999,999,999,999.5";
char result[41];

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

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

if (x = ifx_int8cvasc(string1, strlen(string1), &num1))

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

{
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);
}

/* subtract num2 from num1 */

if (x = ifx_int8tub(&num1, &num2, ∑))
{
printf("Error %d in subtracting INT8t\n", x);
exit(1);
}
if (x = ifx_int8toasc(∑, result, sizeof(result)))
{
printf("Error %d in converting INT8 result to string\n", x);
exit(1);
}
result[40] = '\0';
printf("\t%s - %s = %s\n", string1, string2, result);
/* display result */

if (x = ifx_int8cvasc(string3, strlen(string3), &num3))
{
printf("Error %d in converting string3 to INT8\n", x);
exit(1);
}

/* notice that digits right of the decimal are truncated. */

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


if (x = ifx_int8tub(&num2, &num3, ∑))
{
printf("Error %d in subtracting INT8t\n", x);
exit (1);
}
if (x = ifx_int8toasc(∑, result, sizeof(result)))
{
printf("Error %d in converting INT8 result to string\n", x);
exit(1);
}
result[40] = '\0';
printf("\t%s - %s = %s\n", string2, string3, result);
/* display result */

printf("\nIFX_INT8tUB Sample Program over.\n\n");
exit(0);
}
输出

IFX_INT8tUB Sample ESQL Program running.

6 - 9,223,372,036,854,775 = -9223372036854769
9,223,372,036,854,775 - 999,999,999,999,999.5
= 8223372036854776
IFX_INT8tUB Sample Program over.