返回首页

gbase数据、南大通用产品文档:GBase8s数据模型的说明

更新日期:2024年09月11日

在数据库中收集的信息与在文件中收集的信息的主要差异是组织数据的方式。平面文件是
以物理方式组织的;一些项置于其他项的前面或后面。但数据库的内容时根据数据模型组
织的。数据模型是一个方案或一个图,它定义数据单元并指定每个单元如何与其它单元相
关联。
例如,某个数字可以出现在文件或数据库中。在文件中,它指示出现在文件中某个位置的
数字。但是,数据库中的数字具有数据模型指定给它的角色。该角色可能是一个价格,与
作为客户预订订单中某一商品销售的产品相关联。价格、产品、商品、订单和客户等组件
中的每一个也具有数据模型指定的角色。有关数据模型的说明,请参阅下图。
图: 使用数据模型的优点


GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 4 -
当创建数据库时就会设计数据模型。然后根据模型布局的规划插入数据单元。有些书籍使
用术语模式而不是数据模型。

incvasc() 函数将 INTERVAL 值的符合 ANSI SQL 标准的字符串转换为 interval 值。


语法
mint incvasc(inbuf, invvalue)
char *inbuf;
intrvl_t *invvalue;
inbuf
指向包含 ANSI 标准 INTERVAL 字符串的缓冲区的指针。
invvalue
指向初始化了的 interval 变量的指针。

用法

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

您必须以您想要此变量拥有的限定符来初始化 invvalue 中的 interval 变量。

inbuf 中的字符串可有开头的和结尾的空格。然而,从第一个有效数字到最后一个,
inbuf 仅可包含字符,它们是适合于 interval 变量的限定符字段的数字和定界符。

如果该字符串为空字符串,则 incvasc() 函数将 invvalue 中的值设置为空。如果该字
符串是可接受的,
则该函数设置 interval 变量中的值,
并返回零。
否则,
该函数将 interval
值中的值设置为空。

返回代码
0
转换成功。
-1260
不可能在指定的类型之间转换。
-1261
datetime 或 interval 的第一个字段中的数字太多。
-1262
datetimeinterval 中的非数值字符。
-1263
datetime 或 interval 值中的字段出界或不正确。
-1264
在 datetime 或 interval 值的末尾有额外的字符。
-1265
在 datetime 或 interval 操作上发生溢出。
-1266
datetime 或 interval 值与该操作不兼容。
-1267
datetime 计算的结果出界。
-1268
参数包含无效的 datetime 或 interval 限定符。

示例

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

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

The following program converts ASCII strings into interval (intvl_t) structure. It also
illustrates error conditions involving invalid qualifiers for interval values.
*/

#include

EXEC SQL include datetime;

main()
{
mint x;

EXEC SQL BEGIN DECLARE SECTION;
interval day to second in1;
EXEC SQL END DECLARE SECTION;

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

printf("Interval string #1 = 20 3:10:35\n");
if(x = incvasc("20 3:10:35", &in1))
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 field
*/
printf("\nInterval string #2 = 20 26:10:35\n");
if(x = incvasc("20 26:10:35", &in1))

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

printf("Result = failed with conversion error:%d\n",x);
else
printf("Result = successful conversion\n");

/*
* Try to convert using an invalid qualifier (YEAR to SECOND)
*/
printf("\nInterval string #3 = 2007-02-11 3:10:35\n");
in1.in_qual = TU_IENCODE(4, TU_YEAR, TU_SECOND);
if(x = incvasc("2007-02-11 3:10:35", &in1))
printf("Result = failed with conversion error:%d\n",x);
else
printf("Result = successful conversion\n");

printf("\nINCVASC Sample Program over.\n\n");
}
输出
INCVASC Sample ESQL Program running.
Interval string #1 = 20 3:10:35
Result = successful conversion

Interval string #2 = 20 26:10:35
Result = failed with conversion error:-1263

Interval string #3 = 2007-02-11 3:10:35
Result = failed with conversion error:-1268

使用 OPTOFC 环境变量可在 GBase 8s ESQL/C 应用程序或使用 DECLARE 和 OPEN 语
句来建立游标的其他 API(例如,JDBC、ODBC、OLE DB、LIBDMI 和 Lib C++)中启用优化
OPEN-FETCH-CLOSE 功能。

0 对应用程序的所有线程禁用 OPTOFC。
1 对应用程序的每个线程中的每个游标启用 OPTOFC。
缺省值为 0(零)。
您可以在客户机或服务器上设置 OPTOFC 环境变量。如果在服务器上设置此环境变
量,那么任何未显式设置此环境变量的应用程序会使用在服务器上设置的值。
OPTOFC 环境变量减少应用程序与数据库服务器之间的消息请求数。
如果从 shell 设置 OPTOFC,那么必须在启动 GBase 8s ESQL/C 应用程序之前设置
它。有关启用 OPTOFC 和相关功能的更多信息,请参阅 GBase 8s ESQL/C 程序员手册。


GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 188 -