返回首页

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

更新日期:2024年09月11日

dtcvasc() 函数将符合 ANSI SQL 标准的 DATETIME 值的字符串转换为
datetime 值。
要获取关于 ANSI SQL DATETIME 标准的信息,请参阅 DATETIME 和
INTERVAL 值的 ANSI SQL 标准。
语法
mint dtcvasc(inbuf, dtvalue)
char *inbuf;
dtime_t *dtvalue;
inbuf
指向包含 ANSI 标准 DATETIME 字符串的缓冲区的指针。
dtvalue
指向初始化的 datetime 变量的指针。

用法
您必须以您想要此变量拥有的限定符,来初始化 dtvalue 中的 datetime 变量。

inbuf 中的字符串必须有符合 year to second 限定符的值,该限定符的格式为 ANSI
SQL。
inbuf 字符串可有开头的和结尾的空格。
然而,
从第一个有效位至最后一个,
inbuf 仅
可包含符合 ANSI SQL 标准的 DATETIME 值的数字和定界符的字符。


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

如果您指定年份值作为一个或两个数字,
则 dtcvasc() 函数假定该年份在当前世纪中。
您可设置该 DBCENTURY 环境变量来确定,当您省略来自该日期的世纪时,dtcvasc() 使
用哪个世纪。

如果该字符串为空字符串,则 dtcvasc() 函数将 dtvalue 指向的值设置为空。如果该
字符串是可接受的,则函数设置 datetime 变量中的值,并返回零。否则,函数保持该变量
不变,并返回负的错误代码。

返回代码
0
转换成功。
-1260
不可能在指定的类型之间转换。
-1261
在 datetime 或 interval 的第一个字段中数字太多。
-1262
在 datetime 或 interval 中的非数值字符。
-1263
在 datetime 或 interval 值中的字段超出范围或不正确。
-1264
在 datetime 或 interval 的末尾存在额外的字符。
-1265
在 datetime 或 interval 运算上发生溢出。
-1266
datetime 或 interval 值与该运算不兼容。
-1267
datetime 计算的结果超出范围。
-1268
参数包含无效的 datetime 限定符。
示例
demo 目录在 dtcvasc.ec 文件中包含此样例程序。
/*

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

* dtcvasc.ec *
The following program converts ASCII datetime strings in ANSI SQL format into datetime
(dtime_t) structure.
*/

#include

EXEC SQL include datetime;

main()
{
mint x;

EXEC SQL BEGIN DECLARE SECTION;
datetime year to second dt1;
EXEC SQL END DECLARE SECTION;

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

printf("Datetime string #1 = 2007-02-11 3:10:35\n");
if (x = dtcvasc("2007-02-11 3:10:35", &dt1))
printf("Result = failed with conversion error: %d\n", x);
else
printf("Result = successful conversion\n");

/*
* Note that the following literal string has a 26 in the hours place
*/
printf("\nDatetime string #2 = 2007-02-04 26:10:35\n");
if (x = dtcvasc("2007-02-04 26:10:35", &dt1))
printf("Result = failed with conversion error: %d\n", x);
else
printf("Result = successful conversion\n");

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


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

Datetime string #1 = 2007-02-11 3:10:35
Result = successful conversion

Datetime string #2 = 2007-02-04 26:10:35
Result = failed with conversion error:-1263
DTCVASC Sample Program over.


GBase 8a MPP Cluster 中的游标是一种只读、仅向前的游标。游标中包含的
数据是不能在使用时被更改的,并且游标中的数据只能按照从头至尾的顺序
来读取;

GBase 8a MPP Cluster 中的游标需要配合处理器(handler)来使用,游标需
要在处理器的声明语句之前被声明,而且任何游标内使用的变量都需要在游
标的声明语句之前被定义;

在使用游标处理数据时,
通常会使用LOOP、
REPEAT 或者WHILE 结构,

在这些结构的执行体中使用FETCH 语句来遍历游标中的数据;

在GBase 8a MPP Cluster 中,
同一个存储过程中可声明多个游标,
但有以下
限制:
1. 多个游标不能相互交叉,最好是使用完一个再使用另外一个;
2. 如果使用了LOOP、REPEAT 或者WHILE 结构来遍历游标取得数据并进
行处理,同时如果在这些循环结构的结构体中调用了存储过程,则被调
用的存储过程中不应该再包含游标和用于遍历游标的LOOP、
REPEAT 或
者WHILE 结构,否则可能会出现一些不可预期的结果。

GBA-01BR-0086
错误码
错误标识
错误显示信息
GBA-01BR-0086

remove db from server Error
错误出现原因
删除数据库失败
分析与建议
检查数据库结构的完整性及文件系统的状态和权限