返回首页

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

更新日期:2024年09月11日

GBA-01BR-0077
错误码
错误标识
错误显示信息
GBA-01BR-0077

Get Table Create SQL Error
分析与建议
检查表恢复中的元数据文件夹的内容

GBase 8a MPP Cluster 产品手册
7 附录
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1702
错误出现原因
获取表建表DDL 错误
分析与建议
确定server 状态,是否能够执行show create table


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

sqgetdbs() 函数返回数据库服务器可访问的数据库的名称。

语法

mint sqgetdbs(ret_fcnt, dbnarray, dbnsize, dbnbuffer, dbnbufsz)
mint *ret_fcnt;
char **dbnarray;
mint dbnsize;
char *dbnbuffer;
mint dbnbufsz;
ret_fcnt
指向该函数返回的数据库名称的数目的指针。
dbnarray
用户定义的字符指针的数组。
dbnsize
dbnarray 用户定义的数组的大小。
dbnbuffer
指向包含该函数返回的数据库名称的用户定义的缓冲区的指针。
dbnbufsz
dbnbuffer 用户定义的缓冲区的大小。

用法

您必须将下列用户定义的数据结构提供给 sqgetdbs() 函数:
dbnbuffer 缓冲区保存 sqgetdbs() 返回的以空终止的数据库名称的名称。
dbnarray 数组保存指向该函数存储在 dbnbuffer 缓冲区中的数据库名称的指针。例如,
dbnarray[0] 指向第一个数据库名称的第一个字符(在 dbnbuffer 中),dbnarray[1] 指向第
二个数据库名称的第一个字符,依此类推。

如果该应用程序连接到数据库服务器,则对sqgetdbs() 函数的调用返回当前连接的数
据库服务器中可用的数据库的名称。
这包括用户定义的数据库和 sysmaster 数据库。
然而,
它返回
(GBASEDBTSERVER 环境变量指示的)
在缺省的数据库服务器中可用的数据库名
称。如果您使用 DBPATH 环境变量来标识包含数据库的附加的数据库服务器,则

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

sqgetdbs() 也罗列在这些数据库服务器上可用的数据库。
它首先罗列通过 DBPATH 可用的
数据库,然后是通过 GBASEDBTSERVER 环境变量可用的数据库。

返回代码
0
成功地取得数据库名称
<0
未能取得数据库名称

示例

demo 目录中的 sqgetdbs.ec 文件中包含此样例程序。
/*
* sqgetdbs.ec *

This program lists the available databases in the database server of the current connection.
*/

#include

/* Defines used with exception-handling function: exp_chk() */
#define WARNNOTIFY 1
#define NOWARNNOTIFY 0

/* Defines used for user-defined data structures for sqgetdbs() */
#define BUFFSZ 256
#define NUM_DBNAMES 10

main()
{
char db_buffer[ BUFFSZ ]; /* buffer for database names */ /* array of pointers to
database names in 'db_buffer' */
char *dbnames[ NUM_DBNAMES ];

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

mint num_returned; /* number of database names returned */
mint ret, i;

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

EXEC SQL connect to default;
exp_chk("CONNECT TO default server", NOWARNNOTIFY);
printf("Connected to default server.\n");

ret = sqgetdbs(#_returned, dbnames, NUM_DBNAMES,
db_buffer, BUFFSZ);
if(ret < 0)
{
printf("Unable to obtain names of databases.\n");
exit(1);
}
printf("\nNumber of database names returned = %d\n", num_returned);

printf("Databases currently available:\n");
for (i = 0; i < num_returned; i++)
printf("\t%s\n", dbnames[i]);
printf("\nSQGETDBS Sample Program over.\n\n");
}

/*
* The exp_chk() file contains the exception handling functions to
* check the SQLSTATE status variable to see if an error has occurred
* following an SQL statement. If a warning or an error has
* occurred, exp_chk() executes the GET DIAGNOSTICS statement and * displays the
detail for each exception that is returned.
*/
EXEC SQL include exp_chk.ec;
输出

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


您从 sqgetdbs 样例程序看到的输出依赖于如何设置您的 GBASEDBTSERVER 和
DBPATH 环境变量。下列样例输出假定将 GBASEDBTSERVER 环境变量设置为
mainserver,且假定此数据库服务器包含称为 stores7、sysmaster 和 tpc 的三个数据库。
此输出还假定未设置 DBPATH 环境变量。

SQGETDBS Sample ESQL Program running.

Connected to default server.

Number of database names returned = 3
Databases currently available:
stores7@mainserver
sysmaster@mainserver
tpc@mainserver

SQGETDBS Sample Program over.

结果表包含调度程序任务执行情况的历史数据。
大多数传感器创建一个新的表来存储它们的结果。表的名称在 ph_task 表的
tk_result_table 列中列出。表的结构是由 ph_task 表中 tk_create 列里的 CREATE
TABLE 语句定义的。
当内置传感器以前缀 mon_ 启动时,它会自动创建结果表。

类型
描述
ID
integer
传感器的迭代顺序编号。必须在 $DATA_SEQ_ID
中设置
引用于 ph_run 表中的 run_task_seq 列
user columns
any
可指定任意数据类型的列来保存由传感器返回
的信息