返回首页

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

更新日期:2024年09月11日

跟踪日志(会话级)
会话级跟踪日志记录了各个会话所执行SQL 语句的相关日志信息。
为了保证数据库性能,集群默认不记录会话级跟踪日志信息。要使集群数
据库记录会话级跟踪日志,您需要打开所连接集群节点的查询编辑器,并在其
中执行如下SQL 语句:
set global gbase_sql_trace=ON;
set global gbase_sql_trace_level=3;
双击“跟踪日志(会话级)

,您可以打开“跟踪日志(会话级)管理”对

GBaseDataStudio 管理工具手册
南大通用数据技术股份有限公司
- 353 -
话框,如下图所示:
图5- 764 会话级跟踪日志文件列表
您可以双击列表中的日志文件来查看日志文件内容,如下图所示:

GBaseDataStudio 管理工具手册
- 354 -
南大通用数据技术股份有限公司
图5- 765 会话级跟踪日志文件内容

DESCRIBE 语句获取关于准备好的语句中数据库列或表达式的信息。

DESCRIBE 语句可将此信息放置在下列动态管理结构之一中:
DESCRIBE...USING SQL DESCRIPTOR 在系统描述符区域中存储信息。
每一项描述符描述一列。
将 COUNT 字段设置为项描述符的数目
(在列
列表中的列数)。你可以 GET DESCRIPTOR 语句访问此信息。要获取
关于系统描述符区域的字段的更多信息,请参阅 图 1至 表 1。

DESCRIBE...INTO sqlda_ptr 在 sqlda 结构中存储信息,该结构的地址存储在
sqlda_ptr 中。
每一 sqlvar_struct 结构描述一列。将 sqld 字段设置为
sqlvar_struct 结构的数目(在该列列表中的列数)。您可通过
sqlvar_struct 结构中的字段访问此信息。要获取关于 sqlda 结构
的字段的信息,请参阅 图 1至 表 1。

重要: 如果启用“延迟的 PREPARE”特性,则您不可在 OPEN 语句执行之前使用
DESCRIBE 语句。

如果 DESCRIBE 是成功的,则它获取关于准备好的语句的下列信息:
SQLCODE 值指示准备了的语句的类型。
动态管理结构包含关于 SELECT、INSERT 或 EXECUTE FUNCTION 语句的列列表
中列的数目和数据类型的信息。
当 DESCRIBE 语句描述 DELETE 或 UPDATE 语句时,它可指示该语句是否包括
WHERE 子句。
确定语句类型
对于可准备的 SQL 语句,sqlstype.h 文件包含定义的整数常量。DESCRIBE 语句在

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 472 -
SQLCODE(sqlca.sqlcode)变量中返回这些值之一,来标识准备好的语句。即,SQLCODE
指示该语句是否为 INSERT、SELECT、CREATE TABLE 或任何其他 SQL 语句。

在使用动态 SQL 语句的 GBase 8s ESQL/C 程序内,
您可使用下表展示的常量,
来确
定准备了哪个 SQL 语句。

表 14. sqlstype.h 文件定义的 SQL 语句类型的常量
SQL 语句
定义的 sqlstype.h 常量

SELECT(无 INTO TEMP 子句)

0
DATABASE
SQ_DATABASE
1

仅限于内部使用
2
SELECT INTO TEMP
SQ_SELINTO
3
UPDATE...WHERE
SQ_UPDATE
4
DELETE...WHERE
SQ_DELETE
5
INSERT
SQ_INSERT
6
UPDATE WHERE CURRENT OF
SQ_UPDCURR
7
DELETE WHERE CURRENT OF
SQ_DELCURR
8

仅限于内部使用
9
LOCK TABLE
SQ_LOCK
10
UNLOCK TABLE
SQ_UNLOCK
11
CREATE DATABASE
SQ_CREADB
12
DROP DATABASE
SQ_DROPDB
13
CREATE TABLE
SQ_CRETAB
14
DROP TABLE
SQ_DRPTAB
15
CREATE INDEX
SQ_CREIDX
16
DROP INDEX
SQ_DRPIDX
17
GRANT
SQ_GRANT
18
REVOKE
SQ_REVOKE
19
RENAME TABLE
SQ_RENTAB
20
RENAME COLUMN
SQ_RENCOL
21
CREATE AUDIT
SQ_CREAUD
22

仅限于内部使用
23–28

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 473 -
SQL 语句
定义的 sqlstype.h 常量

ALTER TABLE
SQ_ALTER
29
UPDATE STATISTICS
SQ_STATS
30
CLOSE DATABASE
SQ_CLSDB
31
DELETE(无 WHERE 子句)
SQ_DELALL
32
UPDATE(无 WHERE 子句)
SQ_UPDALL
33
BEGIN WORK
SQ_BEGWORK
34
COMMIT WORK
SQ_COMMIT
35
ROLLBACK WORK
SQ_ROLLBACK
36

仅限于内部使用
37–39
CREATE VIEW
SQ_CREVIEW
40
DROP VIEW
SQ_DROPVIEW
41

仅限于内部使用
42
CREATE SYNONYM
SQ_CREASYN
43
DROP SYNONYM
SQ_DROPSYN
44
CREATE TEMP TABLE
SQ_CTEMP
45
SET LOCK MODE
SQ_WAITFOR
46
ALTER INDEX
SQ_ALTIDX
47
SET ISOLATION、SET TRANSACTION
SQ_ISOLATE
48
SET LOG
SQ_SETLOG
49
SET EXPLAIN
SQ_EXPLAIN
50
CREATE SCHEMA
SQ_SCHEMA
51
SET OPTIMIZATION
SQ_OPTIM
52
CREATE PROCEDURE
SQ_CREPROC
53
DROP PROCEDURE
SQ_DRPPROC
54
SET CONSTRAINTS
SQ_CONSTRMODE
55
EXECUTE PROCEDURE、EXECUTE
FUNCTION
SQ_EXECPROC
56
SET DEBUG FILE TO
SQ_DBGFILE
57
SET MOUNTING TIMEOUT
SQ_OPTIMEOUT
63
对于过程 UPDATE STATS...
SQ_PROCSTATS
64

仅为 Kanji 版本定义
65 和

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 474 -
SQL 语句
定义的 sqlstype.h 常量

66

保留的
67–69
CREATE TRIGGER
SQ_CRETRIG
70
DROP TRIGGER
SQ_DRPTRIG
71

SQ_UNKNOWN
72
SET DATASKIP
SQ_SETDATASKIP
73
SET PDQPRIORITY
SQ_PDQPRIORITY
74
ALTER FRAGMENT
SQ_ALTFRAG
75
SET
SQ_SETOBJMODE
76
START VIOLATIONS TABLE
SQ_START
77
STOP VIOLATIONS TABLE
SQ_STOP
78

仅限于内部使用
79
SET SESSION AUTHORIZATION
SQ_SETDAC
80

仅限于内部使用
81-82
CREATE ROLE
SQ_CREATEROLE
83
DROP ROLE
SQ_DROPROLE
84
SET ROLE
SQ_SETROLE
85

仅限于内部使用
86–;8
9
CREATE ROW TYPE
SQ_CREANRT
90
DROP ROW TYPE
SQ_DROPNRT
91
CREATE DISTINCT TYPE
SQ_CREADT
92
CREATE CAST
SQ_CREACT
93
DROP CAST
SQ_DROPCT
94
CREATE OPAQUE TYPE
SQ_CREABT
95
DROP TYPE
SQ_DROPTYPE
96

保留的
97
CREATE ACCESS_METHOD
SQ_CREATEAM
98
DROP ACCESS_METHOD
SQ_DROPAM
99

保留的
100
CREATE OPCLASS
SQ_CREATEOPC
101

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 475 -
SQL 语句
定义的 sqlstype.h 常量

DROP OPCLASS
SQ_DROPOPC
102
CREATE CONSTRUCTOR
SQ_CREACST
103
SET (MEMORY/NON)_RESIDENT
SQ_SETRES
104
CREATE AGGREGATE
SQ_CREAGG
105
DROP AGGREGATE
SQ_DRPAGG
106
onutil 检查索引命令
SQ_CHKIDX
108
设置日程
SQ_SCHEDULE
109
"set environment..."
SQ_SETENV
110

保留的
111

保留的
112

保留的
113

保留的
114
SET STMT_CACHE
SQ_STMT_CACHE
115
RENAME INDEX
SQ_RENIDX
116
CREATE SEQUENCE
SQ_CRESEQ
124
DROP SEQUENCE
SQ_DRPSEQ
125
ALTER SEQUENCE
SQ_ALTERSEQ
126
RENAME SEQUENCE
SQ_RENSEQ
127
SET COLLATION
SQ_COLLATION
129
SET NO COLLATION
SQ_NOCOLLATION
130
SET ROLE DEFAULT
SQ_SETDEFROLE
131
SET ENCRYPTION
SQ_ENCRYPTION
132
保存外部伪指令
SQ_EXTD
133
CREATE XAdatasource TYPE
SQ_CRXASRCTYPE
134
CREATE XAdatasource
SQ_CRXADTSRC
135
DROP XAdatasource TYPE
SQ_DROPXATYPE
136
DROP XAdatasource
SQ_DROPXADTSRC
137
截断表
SQ_TRUNCATE
138
CREATE SECURITY LABEL
COMPONENT
SQ_CRESECCMP
139
ALTER SECURITY LABEL
SQ_ALTSECCMP
140

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 476 -
SQL 语句
定义的 sqlstype.h 常量

COMPONENT
DROP SECURITY LABEL
COMPONENT
SQ_DRPSECCMP
141
RENAME SECURITY LABEL
COMPONENT
SQ_RENSECCMP
142
CREATE SECURITY POLICY
SQ_CRESECPOL
143
DROP SECURITY POLICY
SQ_DRPSECPOL
144
RENAME SECURITY POLICY
SQ_RENSECPOL
145
CREATE SECURITY LABEL
SQ_CRESECLAB
146
DROP SECURITY LABEL
SQ_DRPSECLAB
147
RENAME SECURITY LABEL
SQ_RENSECLAB
148
GRANT DBSECADM
SQ_GRTSECADM
149
REVOKE DBSECADM
SQ_RVKSECADM
150
GRANT EXEMPTIONS
SQ_GRTSECEXMP
151
REVOKE EXEMPTIONS
SQ_RVKSECEXMP
152
GRANT SECURITY LABEL
SQ_GRTSECLAB
153
REVOKE SECURITY LABEL
SQ_RVKSECLAB
154
GRANT SETSESSIONAUTH
SQ_GRTSESAUTH
155
REVOKE SETSESSIONAUTH
SQ_RVKSESAUTH
156

提示:
对于最新的 SQL 语句类型值的列表,
请检查在您的系统上的 sqlstype.h 头文
件。

要确定动态地准备了的 SQL 语句的类型,
您的 GBase 8s ESQL/C 程序必须采取下列
行动:
使用 include 伪指令来包括 sqlstype.h 头文件。
将 SQLCODE 变量中的值
(sqlca.sqlcode)
与在 sqlstype.h 文件中定义的常量相对比。


执行 SPL 函数的样例程序使用 SQ_EXECPROC 常量来验证已准备了 EXECUTE
FUNCTION 语句。
确定列的数据类型
DESCRIBE 语句以整数值标识列的数据类型。


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 477 -
在 DESCRIBE 分析准备好的语句之后,它将此值存储在动态管理结构中,如下:
在系统描述符区域中,对于描述的每一列,在项描述符的 TYPE 字段中
在 sqlda 结构中,对于描述的每一列,在 sqlvar_struct 结构的 sqltype 字段中

GBase 8s ESQL/C 在下列两个头文件中为这些数据类型提供定义了的常量:
对于 GBase 8s 特定的 SQL 数据类型,sqltypes.h 头文件包含定义了的常量。这些
值是 DESCRIBE 语句使用的缺省值。
对于 X/Open SQL 数据类型,sqlxtype.h 头文件包含定义了的常量。当您以预处理器
的 -xopen 选项,编译您的 GBase 8s ESQL/C 源文件时,DESCRIBE 使用这些值。

请使用来自 sqltypes.h 或 sqlxtype.h 的 SQL 数据类型常量来分析 DESCRIBE 语句
返回的信息,或在执行前设置列的数据类型。

提示:
当您在系统描述符区域中设置列的数据类型时,
请您以 SET DESCRIPTOR 语
句来将数据类型常量指定给项描述符的 TYPE 字段(可选地,以及 ITYPE 字段)。当您
在 sqlda 结构中设置列的数据类型时,
请您将数据类型常量指定给 sqlvar 结构的 sqltype
字段(可选地,以及 sqlitype 字段)。
特定于 GBase 8s 的 SQL 数据类型
在 GBase 8s 数据库中的列可用特定于 GBase 8s 的 SQL 数据类型。

当您编译您的 GBase 8s ESQL/C 程序时,
如果您未包括 -xopen 选线,
则 DESCRIBE
语句使用这些数据类型来指定列的数据类型或用户定义的函数的返回值。在 GBase 8s
ESQL/Csqltypes.h 头文件中定义这些 GBase 8s SQL 数据类型的常量。

下图展示 sqltypes.h 中的一些 SQL 数据类型条目。

图 3. 一些 GBase 8s SQL 数据类型常量

#define SQLCHAR 0
#define SQLSMINT 1
#define SQLINT 2
#define SQLFLOAT 3
#define SQLSMFLOAT 4

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 478 -
#define SQLDECIMAL 5
#define SQLSERIAL 6
#define SQLDATE 7
#define SQLMONEY 8
?

要获取 SQL 数据类型的常量的完整列表,请参阅 表 1。在 图 1中的整数
值是与语言无关的常量;在所有 GBase 8s 嵌入的产品中,它们都一样。
X/Open SQL 数据类型
X/Open 标准仅支持特定于 GBase 8s 的 SQL 数据类型的子集。要符合 X/Open 标
准,您必须使用 X/Open SQL 数据类型常量。

当您以 -xopen 选项来编译您的 GBase 8s ESQL/C 程序时,DESCRIBE 语句使用这
些常量来指定列(或返回值)的数据类型。

在 sqlxtype.h 头文件中定义 X/Open 数据类型常量。
ESQL/C 数据类型的常量
sqltypes.h 头文件包含 GBase 8s ESQL/C 数据类型的定义了的常量。

在 GBase 8s ESQL/C 程序中将 GBase 8s ESQL/C 数据类型指定给主变量。如果您的
程序初始化列描述,则它总是从 GBase 8s ESQL/C 主变量获得该列值。要为此值设置列数
据类型,该程序必须使用 GBase 8s ESQL/C 数据类型。

下列代码段仅展示 sqltypes.h 头文件中一部分 GBase 8s ESQL/C 数据类
型。要获取 GBase 8s ESQL/C 数据类型的常量的完整列表,请参阅 表 1。

#define CCHARTYPE 100
#define CSHORTTYPE 101
#define CINTTYPE 102
#define CLONGTYPE 103
#define CFLOATTYPE 104
#define CDOUBLETYPE 105
?

在使用动态 SQL 语句的 GBase 8s ESQL/C 程序内,您可使用前面的代码
段中展示的那些常量来设置与主变量相关联的数据类型。请使用 GBase 8s

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 479 -
ESQL/C 数据类型来设置用作动态地定义了的 SQL 语句的输入参数的主变量的
数据类型,或作为由数据库服务器返回的列值的存储。执行动态 INSERT 语句
的样例程序将 TEXT 值存储至数据库表内。
确定输入参数
在执行它之前,您可使用 DESCRIBE 和 DESCRIBE INPUT 来为准备好的语句返回
输入参数。

DESCRIBE INPUT 语句返回值的数目、数据类型和大小,以及该查询返回的列或表
达式的名称 DESCRIBE INPUT 语句可为下列语句返回参数信息:
使用 WHERE 子句的 INSERT
使用 WHERE 子句的 UPDATE
带有 IN、BETWEEN、HAVING 和 ON 子句的 SELECT。
SELECT 子查询
SELECT INTO TEMP
DELECT
EXECUTE
检查 WHERE 子句
当 DESCRIBE 分析准备好的 DELETE 或 UPDATE 语句时,它指示该语句是否包
括 WHERE 子句,如下:
如果该准备好的语句是不带有 WHERE 子句的 UPDATE 或 DELETE,则它将
sqlca.sqlwarn.sqlwarn0 和 sqlca.sqlwarn.sqlwarn4 字段设置为 W。
它将 SQLSTATE 变量设置为警告值 "01I07",其特定于 GBase 8s。

您的程序可检查这些条件之一,
来确定执行了的 DELETE 或 UPDATE 语句的类型。
如果 DELETE 或 UPDATE 未包含 WHERE 子句,则数据库服务器删除或更新该表中的
所有行。


GBase 8a MPP Cluster 参数手册
目录
文档版本2022-06-07
南大通用数据技术股份有限公司
X