返回首页

gbase数据、南大通用产品文档:GBase8s使用访问模式来控制数据修改

更新日期:2024年09月11日

GBase 8s 数据库服务器支持访问模式。对于事务内的行,访问模式影响读和写的并发,并
使用 SET TRANSACTION 语句设置访问模式。您可使用访问模式来控制共享的文件之中
的数据修改。
在缺省情况下,事务是读写的。如果您指定事务为只读,则那个事务不可执行下列任务:

插入、删除或更新表行

创建、改变或删除任何数据库对象,诸如模式、表、临时表、索引或存储例程。

授予或撤销权限

更新统计信息

重命名列或表
只读访问模式禁止更新。
您可在只读事务中执行存储例程,只要该例程不试图执行任何受限制的操作。
要获取关于如何使用 SET TRANSACTION 语句来指定访问模式的信息,
请参阅
《GBase 8s
SQL 指南:语法》。

功能描述
返回诊断记录的多个字段的当前值,其中诊断记录包含错误、警告及状态信息。
原型
SQLRETURN SQLGetDiagRec(SQLSMALLINT HandleType,
SQLHANDLE Handle,
SQLSMALLINT RecNumber,
SQLCHAR
*SQLState,
SQLINTEGER
*NativeErrorPtr,
SQLCHAR
*MessageText,
SQLSMALLINT
BufferLength,
SQLSMALLINT *TextLengthPtr);
参数

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
265
表8-28 SQLGetDiagRec 参数
关键字
参数说明
HandleType
句柄类型标识符,它说明诊断所要求的句柄类型。必须为下列
值之一:

SQL_HANDLE_ENV

SQL_HANDLE_DBC

SQL_HANDLE_STMT

SQL_HANDLE_DESC
Handle
诊断数据结构的句柄,其类型由HandleType 来指出。如果
HandleType 是SQL_HANDLE_ENV,Handle 可以是共享的或
非共享的环境句柄。
RecNumber
指出应用从查找信息的状态记录。状态记录从1 开始编号。
NativeErrorPt r
输出参数:
指向缓冲区的指针,
该缓冲区存储着本地的错误码。
MessageText
指向缓冲区的指针,该缓冲区存储着诊断信息文本串。
BufferLength
MessageText 的长度。
TextLengthPt r
输出参数:指向缓冲区的指针,返回MessageText 中的字节总
数。如果返回字节数大于BufferLength,则MessageText 中的
诊断信息文本被截断成BufferLength 减去NULL 结尾字符的长
度。
返回值

SQL_SUCCESS:表示调用正确。

SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。

SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。

SQL_INVALID_HANDLE:表示调用无效句柄。其他API 的返回值同理。
注意事项
SQLGetDiagRec 不返回诊断记录,而是通过以上返回值,来报告执行结果。
当调用ODBC 函数返回值为SQL_ERROR 或SQL_SUCCESS_WITH_INFO 时,可以通
过调用SQLGetDiagRec 返回的诊断信息值SQLSTATE,查看失败或警告原因。SQLSTATE

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
266
值如下表所示。
表8-29 SQLSTATE 值
SQLSATATE
错误
描述
HY000
一般错误
未定义特定的SQLSTATE 所产生的一个错误。
HY001
内存分配错误
驱动程序不能分配所需要的内存来支持函数的
执行或完成。
HY008
取消操作
调用SQLCancel 取消执行语句后,依然在
StatementHandle 上调用函数。
HY010
函数系列错误
在为执行中的所有数据参数或列发送数据前就
调用了执行函数。
HY013
内存管理错误
不能处理函数调用,可能由当前内存条件差引
起。
HYT01
连接超时
数据源响应请求之前,连接超时。
IM001
驱动程序不支持此函

调用了StatementHandle 相关的驱动程序不支持
的函数
示例
参见8.2.23 示例。

dbspace 到 dbspace 列表(SQL 管理 API)
随同 admin() 或 task() 函数,使用 autolocate database add 参数来添加 dbspace 到
可用的 dbspace 列表,用于指定数据库的表的自动定位和分片。
语法

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 694 -

元素
描述
关键考虑
database_name
数据库的名称

dbspace
要添加到 dbspace 名称列表的 dbspace 的名称,在这些
dbsapce 中数据库服务器可自动地创建分片。
dbspace 必须
存在。

用法
AUTOLOCATE 配置参数或会话环境变量必须设置为一个正整数。
可用 dbspace 的列表存储在 sysautolocate 系统目录表中。
示例
下列命令添加 dbspace
dbspace9 到可用 dbspace 的列表,用于在 customer 数据库中的
表的自动定位和分片。
EXECUTE FUNCTION task("autolocate database add", "customer", "dbspace9");