返回首页

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

更新日期:2024年09月11日

功能说明
用PAUSE thread_id 语句可以暂停一个线程的SELECT 操作。
语法格式
PAUSE thread_id
表5- 113 参数说明
参数名称


thread_id
线程ID,
可用SHOW [full] PROCESSLIST 语句可以查看正在
运行的线程的信息。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1103
说明

如果有PROCESS 权限,可以查看所有线程。

如果有SUPER 权限,可以暂停/继续所有线程的SELECT 操作。否
则,用户只能查看并暂停/继续自己的线程。

当用户执行一个PAUSE 命令,对应线程的标志被置位。在大多数
情况下,该操作可能花费一些时间,因为只有在特定时期才检查该
标志。

您可使用 sqlda 结构来保存动态地执行的用户定义的函数返回的值。
要使用 sqlda 结构来处理位置的函数返回值:
声明变量来保存 sqlda 结构的地址。
组装并准备 EXECUTE FUNCTION 语句。
EXECUTE FUNCTION 语句不可包含 INTO 子句。

使用 DESCRIBE...INTO 语句来执行两项任务:
a) 分配 sqlda 结构。将分配的结构的地址存储在您声明的
sqlda 指针中。
b) 确定函数返回值的数目和数据类型。
该 DESCRIBE 语句为每
一返回值填充 sqlvar_struct 结构。
在 DESCRIBE 语句之后,
您可为定义的常量 SQ_EXECPROC 测试 SQLCODE 变量
(sqlca.sqlcode),来检查准备好的 EXECUTE FUNCTION 语句。
在 sqlstype.h 头文件中定义 SQ_EXECPROC 常量。
对于每一返回值,
测试 sqlda 的 sqltype 和 sqllen 字段,
来确定需要为该数据分配的
内存的数量。
执行 EXECUTE FUNCTION 语句,并将返回值存储在 sqlda 结构中。
您用来执行用户定义的函数的语句,依赖于该函数是非游标函数,还是游标函数。
释放您分配给 sqlda 结构的内存。

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

执行非游标函数
非游标函数仅返回一行给应用程序。请使用 EXECUTE...INTO DESCRIPTOR 语句来
执行该函数,并将返回的一个值或多个值保存在 sqlda 结构中。

未显式地定义作为迭代函数的外部函数仅返回单行数据。因此,您可使用
EXECUTE...INTO DESCRIPTOR 来动态地执行最外部的函数,并将它们的返回值保存至
sqlda 结构内。此单行数据仅由一个值组成,因为外部函数仅可返回单个值。sqlda 结构仅
包含带有单个返回值的一个项描述符。

其 RETURN 语句不包括 WITH RESUME 关键字的 SPL 函数仅返回单行数据。因
此,
您可使用 EXECUTE...INTO DESCRIPTOR 来动态地执行大多数 SPL 函数,
并将它们
的返回值保存至 sqlda 结构内。SPL 函数一次可返回一个或多个值,因此,sqlda 结构包
含一个或多个项描述符。

重要: 由于您通常不知道用户定义的函数返回的返回行数,因此,您不可保证仅返
回一行。如果您不使用游标来执行游标函数,则 GBase 8s ESQL/C 生成运行时刻错误。因
此,总是将用户定义的函数与函数游标相关联,是一种好的做法。
执行游标函数
游标函数可将一个或多个返回值的行返回给应用程序。要执行游标函数,您必须将
EXECUTE FUNCTION 语句与函数游标相关联,并使用 FETCH...INTO DESCRIPTOR 语
句来将一个返回值或多个返回值保存在 sqlda 结构中。

要使用 sqlda 结构来保存游标函数返回值:
为用户定义的函数声明函数游标。
使用 DECLARE 语句来将 EXECUTE FUNCTION 语句与函数游标相关联。
使用 OPEN 语句来执行该函数并打开该游标。
使用 FETCH...USING DESCRIPTOR 语句来将返回值从游标检索至 sqlda 结构内。
将行数据从 sqlda 结构检索至带有 C 语言语句的主变量,其访问每一选择列表列的
sqldata 字段。
释放分配给 sqldata 字段和 sqlda 结构的内存。

仅定义作为迭代函数的外部函数可返回多行数据。因此,您必须定义函数游标来动态
地执行迭代函数。每一行数据仅由一个值组成,因为外部函数仅可返回单个值。对于每一
行,sqlda 结构仅包含带有单个返回值的一个 sqlvar_struct 结构。

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

其 RETURN 语句包括 WITH RESUME 关键字的 SPL 函数可返回一行或多行数据。
因此,
您必须定义函数游标来动态地执行这些 SPL 函数。
每一行数据可由一个或多个值组
成,因为 SPL 函数可一次返回一个或多个值。对于每一行,sqlda 结构包含每一返回值的
sqlvar_struct 结构。

+------------------+--------------------+
5 rows in set