返回首页

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

更新日期:2024年09月11日

node (192.168.146.40)
recreate table begin

Statement length exceeds the maximum
应用程序发出了一个长度大于数据库服务器可以处理的 SQL PREPARE 、DECLARE 或
EXECUTE IMMEDIATE 语句。该限制根据实现方式会有所不同。但是大多数情况下,最
长为 32,000 个字符。
检查程序逻辑确保错误不会导致程序显示比预期更长的字符串。
如果文本具有预期的长度,
则修改应用程序,一次显示更少的语句。
它与数据库服务器返回的 -460 错误相同。

数据库服务器支持浮点值的以下数据类型。

SQL 浮点数据类型
ESQL/C 或 C 语言类型
值的范围
SMALLFLOAT, REAL
float
单精度值可达到 9 位有效数字
FLOAT, DOUBLE
PRECISION
double
双精度值可达到 17 位有效数字
DECIMAL(p)
decimal
绝对值的范围 10-130 - 10124
声明浮点主机变量
当使用 C float 数据类型时(对于 SMALLFLOAT 值),请注意大多数 C 编译程序
将 float 作为 double 数据类型传递给函数。如果您声明函数参数为 float,可能接收一个
不正确的结果。例如:在以下摘录中,:hostvar 可能在 tab1 中产生一个不正确的值,这
取决于当您的程序将它作为参数传递时,C 编译程序如何处理 float 数据类型。

main()
{
double dbl_val;

EXEC SQL connect to 'mydb';
ins_tab(dbl_val);


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

}

ins_tab(hostvar)
EXEC SQL BEGIN DECLARE SECTION;
PARAMETER double hostvar;
EXEC SQL END DECLARE SECTION;
{
EXEC SQL insert into tab1 values (:hostvar, ...);
}
隐式数据转换
当 GBase 8s ESQL/C 程序将浮点列值提取到字符主机变量
(char 、
fixchar 、
varchar
或 string)中时,它仅包含可以适合字符缓冲区的 decimal 数字数。如果主机变量对于浮
点数的完整精度来说太小,
则 GBase 8s ESQL/C 将该数字舍入到主机变量可以容纳的精度。


在以下的代码段中,GBase 8s ESQL/C 程序从名为 principal 的 FLOAT 列中将值