返回首页

gbase数据、南大通用产品文档:GBase8sSQLTransact(仅限核心级别)

更新日期:2024年09月11日

SQLTransact 为与连接关联的 hstmts 上的所有活动操作请求提交或回滚。
SQLTransact 还可以请求对与 henv 关联的所有连接执行提交或回滚操作。
下表描述了 SQLTransact 的 SQLSTATE 和错误值。
SQLSTATE
错误值
错误消息
01000
-11001
General warning
08003
-11017
Connection not open
S1000
-11060
General error
S1001
-11061
Memory-allocation failure
S1010
-11067
Function-sequence error
S1012
-11069
Invalid transaction operation code specified
S1C00
-11092
Driver not capable
08S01
-11301
A protocol error has been detected. Current connection is
closed.




10 Unicode
本章提供 Unicode 标准的简要概述并描述如何在 ODBC 应用程序中使用它。

下列 GBase 8s ESQL/C 示例检索 DECIMAL 列的平均值,
其自身是 DECIMAL 值。
然而,
将 DECIMAL 列的平均值放置其内的主变量不要求具有那种数据类型。
EXEC SQL SELECT avg (total_price) into :avg_price
FROM items;
不展示在前面的 GBase 8s ESQL/C 代码示例中接收的变量 avg_price 的声明。
该声明可为任
一下列定义:
int avg_price;
double avg_price;
char avg_price[16];
dec_t avg_price; /* typedef of decimal number structure */
注释语句中使用的每一主变量的数据类型,并使用该语句传到数据库服务器。数据库服务
器尽量将列数据转换为接收的变量使用的形式。允许几乎任何转换,尽管某些转换会导致
精度损失。依赖于接收的主变量的数据类型,前面的示例的结果会不同,如下表所示。
数据类型
结果
FLOAT
数据库服务器将十进制结果转换为 FLOAT,可能截断某些小数位。如果

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 213 -
数据类型
结果
十进制的数量超过 FLOAT 格式的最大数量,则返回一个错误。
INTEGER
数据库服务器将结果转换为 INTEGER,如有必要会截断小数位。如果被
转换的数值的整数部分与接收的变量不适合,则发生错误。
CHARACTER
数据库服务器将十进制值转换为 CHARACTER 字符串。
如果对于接收的变
量来说该字符串太长,则截断它。将 SQLWARN 的第二个字段设置为 W,
且 SQLSTATE 变量中的值为 01004。

GBASEDBTC 环境变量指定要用来编译 GBase 8s ESQL/C 所生成文件的 C 编译器
的文件名或路径名。 该设置仅在 C 编译阶段生效。
如果未设置 GBASEDBTC,那么大部分系统上的缺省编译器为 cc。

compiler C 编译器的文件名。
pathname C 编译器的完整路径名。
例如,要指定 GNU C 编译器,请输入以下命令:
setenv GBASEDBTC gcc
重要: 如果使用 gcc,请注意,数据库服务器假定字符串是可写的,所以您必须使
用 -fwritable-strings 选项进行编译。任务失败可能会产生不可预测的结果(可能包括
核心转储)。