返回首页

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

更新日期:2024年09月11日

intoasc() 函数将 interval 变量的字段值转换为符合 ANSI SQL 标准的 ASCII 字符
串。

语法

mint intoasc(invvalue, outbuf)
intrvl_t *invvalue;
char *outbuf;
invvalue
指向要转换的初始化了的 interval 变量的指针。
outbuf
指向接收 invvalue 中的值的 ANSI 标准 INTERVAL 字符串的缓冲区的指针。

用法
intoasc() 函数将 interval 变量中字段的数字转换为它们的等同的字符,
并将它们以它
们之间的的定界符(连字符、空格、冒号或句号)复制到 outbuf 字符串。您必须以您想要
该字符串拥有的限定符来初始化 invvalue 中的 interval 变量。

该字符串不包括 SQL 语句用来定界 INTERVAL 文字的限定符或圆括号。outbuf 字
符串符合 ANSI SQL 标准。对于每一定界符(连字符、空格、冒号或句号),它包括一个
字符外加带有下列大小的字段。

字段 字段大小
开头字段 由精度指定
小数 由精度指定

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 831 -
所有其他字段 两位

带有 day(5) to fraction(5) 限定符的 interval 值产生输出的最大长度。该等同的字符
串包含 16 数字、4 定界符以及空终止符,总计 21 字节:
DDDDD HH:MM:SS.FFFFF

如果您未初始化 interval 变量的限定符,则 intoasc() 函数返回不可预计的值,但此
值不会超出 21 字节。
返回代码
0
转换成功。
<0
转换失败。
示例
demo 目录在文件 intoasc.ec 中包含此样例程序。
/*
* intoasc.ec *

The following program illustrates the conversion of an interval (intvl_t) into an ASCII
string.
*/

#include

EXEC SQL include datetime;

main()
{
mint x;
char out_str[10];

EXEC SQL BEGIN DECLARE SECTION;
interval day(3) to day in1;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 832 -
EXEC SQL END DECLARE SECTION;

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

printf("Interval (day(3) to day) string is '3'\n");
if(x = incvasc("3", &in1))
printf("Initial conversion failed with error: %d\n",x);
else
{
/* Convert the internal format to ascii for displaying */
intoasc(&in1, out_str);
printf("\tInterval value after conversion is '%s'\n", out_str);
}

printf("\nINTOASC Sample Program over.\n\n");
}


输出
INTOASC Sample ESQL Program running.

Interval (day(3) to day) string is '3'
Interval value afer conversion is ' 3'

SMALLFLOAT 数据类型会存储具有大约九个有效数字的单精度浮点数。
SMALLFLOAT 对应于 C 中的 float 数据类型。SMALLFLOAT 数据类型的值范围与计算
机上 C float 数据类型的值范围相同。
SMALLFLOAT 数据类型列通常存储只能近似计算的科学数字。由于浮点数只保留它们
的大部分有效数位,所以在此类型的列中输入的数和数据库显示的数可能稍有不同,这取
决于计算机内部存储浮点数的方式。
例如,您可能会在 SMALLFLOAT 字段中输入值 1.1000001,在处理了 SQL 语句之
后,应用程序可能会将此值显示为 1.1。当值具有的位数比浮点数可存储的多时,就会出
现这种差别。在这种情况下,用值的近似形式存储值,将其余有效数位视为零。
SMALLFLOAT 数据类型通常需要 4 个字节的存储空间。将 SMALLFLOAT 值转换为

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 113 -
DECIMAL 值会产生 9 位精度。


GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 81 -
本节描述如何从表层次结构内的表查询行。有关如何创建和使用表层次结构的更多信息,
请参阅《GBase 8s 数据库设计和实现指南》。
下列查询显示创建本节中的示例使用的类型和表层次结构的语句。
图: 创建类型和表层次结构的语句
CREATE ROW TYPE address_t
(
street VARCHAR (20),
city VARCHAR(20),
state CHAR(2),
zip VARCHAR(9)
)

CREATE ROW TYPE person_t
(
name VARCHAR(30),
address address_t,
soc_sec CHAR(9)
)

CREATE ROW TYPE employee_t
(
salary INTEGER
)
UNDER person_t

CREATE ROW TYPE sales_rep_t
(
rep_num SERIAL8,
region_num INTEGER
)
UNDER employee_t

CREATE TABLE person OF TYPE person_t

CREATE TABLE employee OF TYPE employee_t
UNDER person

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 82 -

CREATE TABLE sales_rep OF TYPE sales_rep_t
UNDER employee
下图显示上图中的行类型和表的层次关系。
图: 类型和表层次结构