返回首页

gbase数据、南大通用产品文档:GBase8aDROP DATABASE

更新日期:2024年09月11日

语法格式
DROP DATABASE [IF EXISTS] database_name;
DROP DATABASE 删除指定的数据库。用户需要获得对数据库的DROP 权限,才
可以使用DROP DATABASE。
使用关键字IF EXISTS,以防止由于数据库不存在而报告错误。
如果指定database 下仍存在table,则操作报错,需要确保database 下所有table 都
已被删除,DROP DATABASE 功能才能被成功使用。
示例
示例1:删除空数据库。
gbase> DROP DATABASE IF EXISTS test;
Query OK, 1 row affected
示例2:删除存在table 的数据库。
gbase> DROP DATABASE IF EXISTS test;
GBase general error: Database is not empty. One or more tables exist.

当调用 SQLExtendedFetch、SQLFetch 或 SQLGetData 时,GBase 8s ODBC Driver 从数据
源检索数据。

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 71 -

如有必要,
GBase 8s ODBC Driver 将数据由源数据类型转换为 SQLBindCol 中 TargetType
参数或 SQLGetData 中 fCType 参数指定的数据类型。最终,GBase 8s ODBC Driver 将该
数据存储在由 SQLBindCol 或 SQLGetData 中 rgbValue 参数指向的位置中。
下面部分中的表描述 GBase 8s ODBC Driver如何从数据源检索的数据转换它。对于给定的
GBase 8s ODBC Driver SQL 数据类型,表的第一列罗列 SQLBindCol 中 TargetType 参数
和 SQLGetData 中 fCType 参数的合法输入值。第二列罗列测试的结果,通常通过使用
SQLBindCol 或 SQLGetData 中 cbValueMax参数,GBase 8s ODBC Driver执行其来确定它
是否可转换该数据。
对于每一结果,
第三和第四列罗列在 GBase 8s ODBC Driver 试图转换
该数据之后,
在 SQLBindCol 或 SQLGetData 中指定的 rgbValue 和 pcbValue 参数的值。

对于每一结果,最后一列罗列由 SQLExtendedFetch、SQLFetch 或 SQLGetData 返回的
SQLSTATE。
如果 SQLBindCol 中的 TargetType 参数或 SQLGetData 中的 fCType 参数包含一个
GBase 8s ODBC Driver C 数据类型的值,而该数据类型未显示在给定的 GBase 8s ODBC
Driver SQL 数据类型的表中,则 SQLExtendedFetch、SQLFetch 或 SQLGetData 返回
SQLSTATE 07006(受限制的数据类型属性违反)。如果 fCType 参数或 TargetType 参数
包含一值,
其指定由特定于驱动程序的 SQL 数据类型转换为 GBase 8s ODBC Driver C 数
据类型,且 GBase 8s ODBC Driver 不支持此转换,则 SQLExtendedFetch、SQLFetch 或
SQLGetData 返回 SQLSTATE S1C00(驱动程序不支持)。
虽然本章节中的表未展示它,但当 SQL 数据值为空时,pcbValue 参数包含
SQL_NULL_DATA。当 GBase 8s ODBC Driver 将 SQL 数据转换为字符 C 数据时,
pcbValue 中返回的字符计数不包括空终止字节。
如果 rgbValue 是空指针,
则 SQLBindCol
或 SQLGetData 返回 SQLSTATE S1009(无效的参数值)。
表中使用下列术语和惯例:
数据的长度
无论数据在返回到应用程序之前是否被截断,都可以在 rgbValue 中返回的 C 数
据的字节数。对于字符串数据,这不包括空终止字节。
显示大小
以字符格式显示该数据所需要的总字节数。
斜体词语
表示函数参数或 GBase 8s ODBC Driver SQL 语法的元素。

缺省的 C 数据类型
可为不同的函数指定 SQL_C_DEFAULT,以便于 GBase 8s ODBC Driver 使用该 C 数据
类型。
如果为 SQLBindCol 中的 TargetType 参数、SQLGetData 中的 fCType 参数或
SQLBindParameter 中的 ValueType 参数指定 SQL_C_DEFAULT,则 GBase 8s ODBC
Driver使用输出或输入缓冲区的 C 数据类型作为缓冲区绑定的列或参数的 SQL 数据类型
标准缺省 C 数据类型

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 72 -

对于每一 GBase 8s ODBC Driver SQL 数据类型,有缺省的 C 数据类型。
对于每一 GBase 8s ODBC Driver SQL 数据类型,下表展示缺省 C 数据类型。
GBase 8s ODBC 驱动程序 SQL 数据类
型(fSqlType)
缺省的 GBase 8s ODBC 驱动程序 C 数
据类型(fCType)
SQL_BIGINT
SQL_C_CHAR
SQL_BIT
SQL_C_BITS
SQL_CHAR
SQL_C_CHAR
SQL_DATE
SQL_C_DATE
SQL_DECIMAL
SQL_C_CHAR
SQL_DOUBLE
SQL_C_DOUBLE
SQL_INTEGER
SQL_C_SLONG
SQL_LONGVARBINARY
SQL_C_BINARY
SQL_LONGVARCHAR
SQL_C_CHAR
SQL_NUMERIC
SQL_C_NUMERIC
SQL_REAL
SQL_C_FLOAT
SQL_SMALLINT
SQL_C_SSHORT
SQL_TIMESTAMP
SQL_C_TIMESTAMP
SQL_VARCHAR
SQL_C_CHARS

GBase 8s 的附加缺省 C 数据类型
对于每一附加的 GBase 8s ODBC Driver SQL 数据类型,有缺省 C 数据类型。
对于 GBase 8s 的每一附加的 GBase 8s ODBC Driver SQL 数据类型,下表展示缺省的 C
数据类型。
GBase 8s ODBC 驱动程序
SQL 数据类型(fSqlType)
缺省的 GBase 8s ODBC 驱动程序 C 数据类型
(fCType)
SQL_IFMX_UDT_BLOB
SQL_C_BINARY
SQL_IFMX_UDT_CLOB
SQL_C_BINARY
SQL_INFX_UDT_FIXED
此 GBase 8s ODBC Driver SQL 数据类型没有缺省的
GBase 8s ODBC Driver C 数据类型。由于此 GBase 8s
ODBC 驱动程序 SQL 数据类型可包含二进制数据或字
符数据,
因此,
在访存对应的值之前,
您必须为此 GBase
8s ODBC 驱动程序 SQL 数据类型绑定一个变量。绑定
的变量的数据类型为该值指定 C 数据类型。

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 73 -

GBase 8s ODBC 驱动程序
SQL 数据类型(fSqlType)
缺省的 GBase 8s ODBC 驱动程序 C 数据类型
(fCType)
SQL_INFX_UDT_VARYING
此 GBase 8s ODBC Driver SQL 数据类型没有缺省的
GBase 8s ODBC Driver C 数据类型。因为此 GBase 8s
ODBC Driver SQL 数据类型包含二进制数据或字符数
据,因此在访存对应的值之前,您必须为此 GBase 8s
ODBC Driver SQL 数据类型绑定一个变量。绑定的变量
的数据类型为该值指定 C 数据类型。

SQL 至 C:二进制
二进制 GBase 8s ODBC Driver SQL 数据类型是 SQL_LONGVARBINARY。
下表展示可将二进制 SQL 数据转换成的 GBase 8s ODBC Driver C 数据类型。
fCType
测试
rgbValue
pcbValue
SQLSTATE
SQL_C_BINARY 数据的长度 ≤ cbValueMax
数据
数据的长度 不适用
数据的长度 > cbValueMax
截断的数据 数据的长度 01004
SQL_C_CHAR
(数据的长度) * 2 <
cbValueMax
数据
数据的长度 不适用
(数据的长度) * 2 ≥
cbValueMax
截断的数据 数据的长度 01004
当 GBase 8s ODBC Driver 将二进制 SQL 数据转换为字符 C 数据时,将源数据的每一字
节(8 位)表示为两个 ASCII 字符。这些字符是以十六进制形式表示的数值的 ASCII 字
符。
例如,
GBase 8s ODBC Driver 将二进制 00000001 转换为 "01",
将二进制 11111111 转
换为 "FF"。
GBase 8s ODBC Driver将单独的字节转换为十六进制数字对,
并以空字节终止该字符串。

于此惯例,
如果 cbValueMax 是偶数,
并小于被转换的数据的长度,
则不使用 rgbValue 缓
冲区的最后一个字节。(转换的数据需要偶数字节,邻近最后一个字节的是空字节,且不
可使用最后的字节。)

SQL 至 C:布尔
布尔 GBase 8s ODBC Driver SQL 数据类型为 SQL_BIT。
下表展示可将布尔 SQL 数据转换为哪些 GBase 8s ODBC Driver C 数据类型。当 GBase
8s ODBC Driver 将布尔 SQL 数据转换为字符 C 数据时,可能的值为 0 和 1。
可将布尔 SQL 数据转换成的 GBase 8s ODBC Driver C 数据类型
fCType
测试
rgbValue pcbValue
SQLSTATE
SQL_C_BINARY cbValueMax ≤ 1
数据
1
不适用
cbValueMax < 1
未受影响 未受影响
22003

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 74 -

fCType
测试
rgbValue pcbValue
SQLSTATE
SQL_C_BIT
对于此转换, GBase 8s
ODBC Driver 忽略
cbValueMax 的值。
对于该 C
数据类型的大小,GBase 8s
ODBC Driver 使用 rgbValue
的大小。
数据
1
(这是对应的
C 数据类型的
大小。)
不适用
SQL_C_CHAR
cbValueMax > 1
数据
1
不适用
cbValueMax ≤ 1
未受影响 未受影响
22003

SQL 至 C:字符
字符 GBase 8s ODBC Driver SQL 数据类型为 SQL_CHAR、SQL_LONGVARCHAR 和
SQL_VARCHAR。
下表展示可将字符 SQL 数据转换为哪些 GBase 8s ODBC Driver C 数据类型。当 GBase
8s ODBC Driver 将字符 SQL 数据转换为数值、日期或时间戳 C 数据时,它忽略开头和
结尾的空格。
可将字符 SQL 数据转换成的 GBase 8s ODBC Driver C 数据类型。
fCType
测试
rgbValue pcbValue
SQLSTATE
SQL_C_BINARY
数据的长度 ≤
cbValueMax。
数据
数据的长

不适用
数据的长度 >
cbValueMax。
截断的数

数据的长

01004
SQL_C_BIT
数据为 0 或 1。
数据
1
不适用
数据大于 0,
小于 2,
且不
等于 1。
截断的数

1
01004
数据小于 0 或大于或等于
2。
未受影响 未受影响
22003
数据不是数值-文字。
未受影响 未受影响
(对应的
C 数据类
型的大小
为 1。)
22005
SQL_C_CHAR
数据的长度 <
cbValueMax。
数据
数据的长

不适用
数据的长度 ≥
cbValueMax。
截断的数

数据的长

01004
SQL_C_DATE
数据值是有效的日期值。
数据
6
不适用
数据值是有效的时间戳值;
时间部分为零。
数据
6
不适用

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 75 -

fCType
测试
rgbValue pcbValue
SQLSTATE
数据值是有效的时间戳值;
时间部分非零。
(GBase 8s ODBC Driver
忽略时间戳值的日期部
分。)
截断的数

6
01004
数据值不是有效的日期值
或时间戳值。
(对于所有这些转换,
GBase 8s ODBC Driver 忽
略 cbValueMax的值。对于
该 C 数据类型的大小,
GBase 8s ODBC Driver使
用 rgbValue 的大小。)
未受影响 未受影响
(对应的
C 数据类
型的大小
是 6。)
22008
SQL_C_DOUBLE
SQL_C_FLOAT
数据在正在将数值转换为
其的数据类型的范围之内。

数据
C 数据类
型的大小
不适用
数据在正在将数值转换为
其的数据类型的范围之外。

未受影响 未受影响
22003
数据不是数值-文字。
(对于所有这些转换,
GBase 8s ODBC Driver 忽
略 cbValueMax的值。对于
该 C 数据类型的大小,
GBase 8s ODBC Driver使
用 rgbValue 的大小。)
未受影响 未受影响
22005
SQL_C_LONG
SQL_C_SHORT
SQL_C_SLONG
SQL_C_SSHORT
SQL_C_STINYINT
SQL_C_TINYINT
SQL_C_ULONG
SQL_C_USHORT
SQL_C_UTINYINT
无截断的数据转换。
数据
C 数据类
型的大小
不适用
截断小数位的转换的数据。
截断的数

C 数据类
型的大小
01004
数据的转换会导致整个数
字丢失(不同于小数位)。

未受影响 未受影响
22003
数据不是数值-文字。
(对于所有这些转换,
GBase 8s ODBC Driver 忽
略 cbValueMax的值。对于
C 数据类型的大小,
GBase
8s ODBC Driver使用
rgbValue 的大小。)
未受影响 未受影响
22005
SQL_C_TIMESTAMP
数据值是有效的时间戳值;
不截断小数秒部分。
数据
16
不适用
数据值是有效的时间戳值;
截断小数秒部分。
截断的数

16
不适用

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 76 -

fCType
测试
rgbValue pcbValue
SQLSTATE
数据值是有效的日期值。
数据
(GBase
8s ODBC
Driver将
时间戳结
构的时间
域设置为
零。)
16
不适用
数据值是有效的时间值。
数据
(GBase
8s ODBC
Driver将
时间戳结
构的日期
域设置为
当前日
期。)
16
不适用
数据值不是有效的日期值、
时间值或时间戳值。
(对于所有这些转换,
GBase 8s ODBC Driver 忽
略 cbValueMax的值。对于
该 C 数据类型的大小,
GBase 8s ODBC Driver使
用 rgbValue 的大小。)
未受影响 未受影响
(对应的
C 数据类
型的大小
为 16。)
22008

SQL 至 C:日期
日期 GBase 8s ODBC Driver SQL 数据类型为 SQL_DATE。
下表展示可将日期 SQL 数据转换为哪些 GBase 8s ODBC Driver C 数据类型。当 GBase
8s ODBC Driver 将日期 SQL 数据转换为字符 C 数据时,结果字符串的格式为
yyyy-mm-dd。
可将日期 SQL 数据转换成的 GBase 8s ODBC Driver C 数据类型。
fCType
测试
rgbValue
pcbValue
SQLSTATE
SQL_C_BINARY
数据的长度 ≤
cbValueMax
数据
数据的长度 不适用
数据的长度 >
cbValueMax
未受影响
未受影响
22003
SQL_C_CHAR
cbValueMax ≥ 11
数据
10
不适用
cbValueMax < 11
未受影响
未受影响
22003
SQL_C_DATE
对于此转换,GBase 8s
ODBC Driver 忽略
数据
6
(这是对应
不适用

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 77 -

fCType
测试
rgbValue
pcbValue
SQLSTATE
cbValueMax 的值。对于
该 C 数据类型的大小,
GBase 8s ODBC Driver
使用 rgbValue 的大小。
的 C 数据
类型的大
小。)
SQL_C_TIMESTAMP 对于此转换,GBase 8s
ODBC Driver 忽略
cbValueMax 的值。对于
该 C 数据类型的大小,
GBase 8s ODBC Driver
使用 rgbValue 的大小。
数据
(GBase 8s
ODBC
Driver 将时
间戳结构的
时间域设置
为零。)
16
(这是对应
的 C 数据
类型的大
小。)
不适用

SQL 至 C:数值
数值 GBase 8s ODBC Driver SQL 数据类型是 SQL_DECIMAL、SQL_DOUBLE、
SQL_INTEGER、SQL_REAL 和 SQL_SMALLINT
下表展示可将数值 SQL 数据转换为哪些 GBase 8s ODBC Driver C 数据类型。
可将数值 SQL 数据转换成的 GBase 8s ODBC Driver C 数据类型。
fCType
测试
rgbValue pcbValue
SQLSTATE
SQL_C_BINARY
数据的长度 ≤
cbValueMax。
数据
数据的长度
不适用
数据的长度 >
cbValueMax。
未受影响 未受影响
22003
SQL_C_BIT
数据为 0 或 1。
数据
1
不适用
数据大于 0,小于 2,且
不等于 1。
截断的数

1
01004
数据小于 0 或大于或等
于 2。
未受影响 未受影响
22003
数据不是数值-文字。
未受影响 未受影响
(对应的 C
数据类型的大
小为 1。)
22005
SQL_C_CHAR
显示大小 < cbValueMax
数据
数据的长度
不适用
所有位数
(相对于小数位)
< cbValueMax。
截断的数

数据的长度
01004
所有位数
(相对于小数位)
≥ cbValueMax。
未受影响 未受影响
22003
SQL_C_DOUBLE
SQL_C_FLOAT
数据在正在将数值转换至
的数据类型的范围之内。
数据
C 数据类型
的大小
不适用
数据在正在将数值转换至未受影响 未受影响
22003

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 78 -

fCType
测试
rgbValue pcbValue
SQLSTATE
的数据类型的范围之外。
(对于此转换,GBase 8s
ODBC Driver 忽略
cbValueMax 的值。
对于该
C 数据类型的大小,
GBase 8s ODBC Driver
使用 rgbValue 的大小。)

SQL_C_LONG
SQL_C_SHORT
SQL_C_SLONG
SQL_C_SSHORT
SQL_C_STINYINT
SQL_C_TINYINT
SQL_C_ULONG
SQL_C_USHORT
SQL_C_UTINYINT
未截断的转换的数据。
数据
C 数据类型
的大小
不适用
截断小数位的转换的数
据。
截断的数

C 数据类型
的大小
01004
数据的转换会导致所有位
的丢失
(相对于小数位)


(对于此转换,GBase 8s
ODBC Driver 忽略
cbValueMax 的值。
对于该
C 数据类型的大小,
GBase 8s ODBC Driver
使用 rgbValue 的大小。)

未受影响 未受影响
22003

SQL 至 C:时间戳
时间戳 GBase 8s ODBC Driver SQL 数据类型为 SQL_TIMESTAMP。
下表展示可将时间戳 SQL 数据转换为哪些 GBase 8s ODBC Driver C 数据类型。
可将时间戳 SQL 数据转换成的 GBase 8s ODBC Driver C 数据类型。
fCType
测试
rgbValue
pcbValue
SQLSTATE
SQL_C_BINARY
数据的长度 ≤
cbValueMax。
数据
数据的长度
不适用
数据的长度 >
cbValueMax。
未受影响
未受影响
22003
SQL_C_CHAR
cbValueMax > 显示大
小。
数据
数据的长度
不适用
20 ≤ cbValueMax ≤
显示大小。
截断的数

(GBase 8s
ODBC
Driver 截
断时间戳
的小数秒
部分。)
数据的长度
01004
cbValueMax < 20。
未受影响
未受影响
22003

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 79 -

fCType
测试
rgbValue
pcbValue
SQLSTATE
SQL_C_DATE
时间戳的时间部分为零。
数据
6
不适用
时间戳的时间部分非零。

(对于此转换,GBase 8s
ODBC Driver 忽略
cbValueMax 的值。对于
该 C 数据类型的大小,
GBase 8s ODBC Driver
使用 rgbValue 的大小。


截断的数

(GBase 8s
ODBC
Driver 截
断时间戳
的时间部
分。)
6
(对应的 C
数据类型的大
小为 6。)
01004
SQL_C_TIMESTAMP 不截断时间戳的小数秒
部分。
数据
16
不适用
截断时间戳的小数秒部
分。
(对于此转换,GBase 8s
ODBC Driver 忽略
cbValueMax 的值。对于
该 C 数据类型的大小,
GBase 8s ODBC Driver
使用 rgbValue 的大小。


截断的数

(GBase 8s
ODBC
Driver截断
时间戳的
小数秒部
分。)
16
(对应的 C
数据类型的大
小为 16。)
01004
当 GBase 8s ODBC Driver 将时间戳 SQL 数据转换为字符 C 数据时,生成的字符串采用
yyyy-mm-dd hh:mm:ss[.f...] 的格式,在此,小数秒最多可使用九位。除了小数点和小数秒
以外,不论时间戳 SQL 数据类型的精度,都必须使用整个格式,。

SQL 至 C 数据转换示例
这些示例展示 GBase 8s ODBC Driver 如何将 SQL 数据转换为 C 数据。
下表说明 GBase 8s ODBC Driver 如何将 SQL 数据转换为 C 数据。"\0" 表示空终止字节
(当该 C 数据类型为 SQL_C_WCHAR 时,"\0" 表示一个宽的空终止字符)。GBase 8s
ODBC Driver 始终以空字符来终止 SQL_C_CHAR 和 SQL_C_WCHAR 数据。对于
SQL_DATE 与 SQL_C_TIMESTAMP 的组合,GBase 8s ODBC Driver 将 rgbValue 列中
的数值存储在 TIMESTAMP_STRUCT 结构的字段中 。
展示 GBase 8s ODBC Driver 如何将 SQL 数据转换为 C 数据的六列表。
SQL 数据类型
SQL 数据值 C 数据类型
cbValue
Max
rgbValue
SQLSTATE
SQL_CHAR
tigers
SQL_C_CHAR
7
tigers\0
不适用
SQL_CHAR
tigers
SQL_C_CHAR
6
tiger\0
01004
SQL_CHAR
tigers
SQL_C_WCHAR 14
tigers\0
不适用
SQL_CHAR
tigers
SQL_C_WCHAR 12
tiger\0
01004
SQL_DECIMAL


GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 284 -
动态日志分配可防止在长事务回滚期间日志文件填满并挂起系统。仅当下一个日志文件包
含打开的事务时,该功能才处于活动状态。(如果事务在到达长事务高水位标志时未落实
或回滚,那么为长事务。)
数据库服务器在下一个日志文件包含打开的事务时,在当前日志文件后自动(动态)分配
日志文件。可以将动态记录分配用于以下操作:

当系统活动时添加日志文件

在当前日志文件后插入日志文件

立即访问新日志文件(即使根数据库空间未备份)
测试动态日志分配的最好方法是产生跨所有日志文件的事务,然后使用 onstat -l 检查是否
有新添加的日志文件。有关更多信息,请参阅分配日志文件。
要点: 仍然必须备份日志文件以防止其填满。如果日志文件填满,那么系统挂起,直至
您执行备份。