返回首页

gbase数据、南大通用产品文档:GBase8s更新集合元素

更新日期:2024年09月11日

您可通过访问游标内的集合来更新集合元素,就如同您选择或删除个别的元素一样。
如果您想要更新集合 SET{100, 200, 300, 500} 来将值 500 更改为 400,
请从数据库将该 SET
检索至集合变量内,然后声明游标来在 SET 中的元素间移动,如下图所示。
图: 更新集合元素。
DEFINE s SET(INTEGER NOT NULL);
DEFINE n INTEGER;

SELECT numbers INTO s FROM orders
WHERE order_num = 10;

FOREACH cursor1 FOR
SELECT * INTO n FROM TABLE(s)
IF ( n == 500 ) THEN
UPDATE TABLE(s)(x)
SET x = 400 WHERE CURRENT OF cursor1;
EXIT FOREACH;
ELSE
CONTINUE FOREACH;
END IF;
END FOREACH
UPDATE 语句使用集合变量 s 作为集合派生的表。要指定集合派生的表,请使用 TABLE
关键字。
在 UPDATE 语句中跟在 (s) 之后的值 (x) 是您提供的列名称 derived column,
因为
SET 子句需要它,即使集合派生的表没有列也需要。
请将集合派生的表视作有一行,且看起来与下列示例有些相似:
100 200 300 500
在此示例中,x 是包含值 500 的“列”的虚构的列名称。如果您正在更新内建的、opaque、
distinct 或集合类型元素的集合,则仅指定派生的列。如果您正在更新 row 类型的集合,
请使用字段名,而不是派生的列,如 更新 row 类型的集合 描述的那样。

使用变量更新集合
您还可使用存储在变量中的值,而不是文字值,来更新集合。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 309 -
下图中的 SPL 过程使用类似于 图 1 展示的语句,
除了此过程是使用变量,
而不是文字值,
来更新 manager 表的 direct_reports 列中的 SET。图 2 定义该 manager 表。
图: 使用变量更新集合。
CREATE PROCEDURE new_report(mgr VARCHAR(30),
old VARCHAR(30), new VARCHAR(30) )

DEFINE s SET (VARCHAR(30) NOT NULL);
DEFINE n VARCHAR(30);

SELECT direct_reports INTO s FROM manager
WHERE mgr_name = mgr;

FOREACH cursor1 FOR
SELECT * INTO n FROM TABLE(s)
IF ( n == old ) THEN
UPDATE TABLE(s)(x)
SET x = new WHERE CURRENT OF cursor1;
EXIT FOREACH;
ELSE
CONTINUE FOREACH;
END IF;
END FOREACH

UPDATE manager SET mgr_name = s
WHERE mgr_name = mgr;

END PROCEDURE;
嵌套在 FOREACH 循环中的 UPDATE 语句使用集合派生的表 s 和派生的列 x。如果 n 的
当前值与 old 相同,则 UPDATE 语句将它更改为 new 的值。第二个 UPDATE 语句
在 manager 表中存储新集合。

GBase 8s 主存储管理器 使用某些特定配置参数中的信息。


GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 236 -
PSM_ACT_LOG 配置参数
如果您不希望在 ON-Bar 活动日志中包含日志信息,那么可以使用 PSM_ACT_LOG 配置
参数指定 GBase 8s 主存储管理器 活动日志的位置。
onconfig.std 值
none
如果值不存在
将使用 BAR_ACT_LOG 配置参数的值
值的范围
完整路径名
生效
当 onpsm 实用程序启动时
通过运行 onmode -wf 命令在 onconfig 文件中动态重置该值时。
通过运行 onmode -wm 命令重置会话的值时。
用途
指定具有适当可用空间量的现有目录的路径,或者使用 $GBASEDBTDIR/psm_act.log。如
果仅指定文件名,那么存储管理器将在您启动存储管理器的工作目录中创建活动日志。
如果 PSM_ACT_LOG 配置参数未设置,
那么 GBase 8s Primary Storage Manager 会将活动
信息放入 BAR_ACT_LOG 配置参数中指定的目录内。要清楚地将 ON-Bar 与 GBase 8s
Primary Storage Manager 活动信息区分开,请使用 PSM_ACT_LOG 来为存储管理器的活
动日志指定不同的位置。
文件格式与数据库服务器消息日志的格式相似。可以检查活动日志以确定存储管理器操作
的结果。
如果 PSM_ACT_LOG 配置参数指定的文件不存在,那么会创建该文件。
您也可以使用 PSM_ACT_LOG 环境变量来指定您环境(例如,单个会话)的 GBase 8s
Primary Storage Manager 活动日志的位置。

PSM_CATALOG_PATH 配置参数
使用 PSM_CATALOG_PATH 配置参数可指定包含 GBase 8s 主存储管理器 目录表的目
录的完整路径。这些目录表包含有关存储管理器所管理的池、设备和对象的信息。
onconfig.std 值
UNIX™ 或 Linux™:$GBASEDBTDIR/etc/psm
值的范围

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 237 -
包含 GBase 8s Primary Storage Manager 目录表的目录的完整路径名
生效
当 ON-Bar 或 onpsm 实用程序启动时
通过运行 onmode -wf 命令在 onconfig 文件中动态重置该值时。
通过运行 onmode -wm 命令重置会话的值时。
用途
您可以将缺省路径更改为其他位置。GBase 8s Primary Storage Manager 会将包含有关设备
和对象的信息的文件放在您指定的任何目录中。
如果将备份文件移至其他位置,请更改 PSM_CATALOG_PATH 配置参数的值。
您可以随时备份该文件的内容。
如果您有多个实例,并且每个实例中的 PSM_CATALOG_PATH 都设置为相同的路径,那
么所有实例都包含相同的目录表。 可以为每个实例指定不同的路径。
当您首次运行 onpsm 实用程序命令或首次使用 XBSA 共享库时,存储管理器会自动创建
目录表。
您也可以使用 PSM_CATALOG_PATH 环境变量来指定您环境
(例如,
单个会话)
的 GBase
8s Primary Storage Manager 目录表的位置。

PSM_DBS_POOL 配置参数
使用 PSM_DBS_POOL 配置参数可更改 GBase 8s 主存储管理器 用于放置备份与恢复数
据库空间数据的池的名称。
onconfig.std 值
DBSPOOL
生效
当 onpsm 实用程序启动时
通过运行 onmode -wf 命令在 onconfig 文件中动态重置该值时。
通过运行 onmode -wm 命令重置会话的值时。
用途
存储管理器会自动将数据库空间数据放入 DBSPOOL 或您指定的池内。
您可以使用字母和
数字的任意组合。
也可以使用 PSM_DBS_POOL 环境变量来更改您环境(例如,单个会话)的池的名称。

PSM_DEBUG 配置参数

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 238 -
如果您要使用的调试级别不同于 ON-Bar 所使用的级别,请使用 PSM_DEBUG 配置参数
指定在 GBase 8s Primary Storage Manager 调试日志中打印的调试信息量。
onconfig.std 值
0
单位
一位数字,代表所需的调试信息的级别
值的范围
0 = 无调试消息。
1 = 仅打印内部错误。
2 = 打印有关函数入口和出口的信息,并打印内部错误。
3 = 打印 1-2 指定的信息以及其他详细信息。
4 = 打印有关并行操作的信息,以及 1-3 指定的信息。
5 = 打印有关 GBase 8s Primary Storage Manager 中内部状态的信息。
6 = 打印 1-5 指定的信息以及其他详细信息。
7 = 打印 1-6 指定的信息以及其他详细信息。
8 = 打印 1-7 指定的信息以及其他详细信息。
9 = 打印所有调试信息。
如果值不存在
将使用 BAR_DEBUG 配置参数的值。
生效
当 onpsm 实用程序启动时
当 ON-Bar 实用程序执行命令并读取 BAR_DEBUG 配置参数中指定的信息时
通过运行 onmode -wf 命令在 onconfig 文件中动态重置该值时。
通过运行 onmode -wm 命令重置会话的值时。
用途
如果将 PSM_DEBUG 配置参数设置为大于 0 的有效值,那么 GBase 8s Primary Storage
Manager 会将调试消息记录到其调试日志中。
您可以使用不同的调试值进行试验,以找出合适的信息量。通常,如果 PSM_DEBUG 配
置参数设置为 5,存储管理器即可打印足够的信息用于跟踪和调试。
设置为 8 和 9 需要大量空间。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 239 -
您也可以使用 PSM_DEBUG 环境变量来指定您环境(例如,单个会话)的存储管理器调
试日志中打印的调试信息量。

PSM_DEBUG_LOG 配置参数
如果您不希望在 ON-Bar 调试日志中包含日志信息,
那么可以使用 PSM_DEBUG_LOG 配
置参数指定 GBase 8s 主存储管理器 将调试消息写入的调试日志的位置。
onconfig.std 值
UNIX™ 或 Linux™:/usr/gbasedbt/bar_dbug.log
如果值不存在
将使用 BAR_DEBUG_LOG 配置参数的值。
生效
当 onpsm 实用程序启动时
通过运行 onmode -wf 命令在 onconfig 文件中动态重置该值时。
通过运行 onmode -wm 命令重置会话的值时。
用途
如果 PSM_DEBUG_LOG 配置参数未设置,那么 GBase 8s Primary Storage Manager 会将
活动信息放入 BAR_DEBUG_LOG 配置参数中指定的目录内。要清楚地将 ON-Bar 与
GBase 8s Primary Storage Manager 活动信息区分开,请使用 PSM_DEBUG_LOG 来为
GBase 8s Primary Storage Manager 活动日志指定不同的位置。
出于安全性原因,请将 PSM_DEBUG_LOG 配置参数设置为带有受限许可权的目录,如
$GBASEDBTDIR 目录。
如果保留调试文件的目录变得太大,那么您可以擦除该文件。仅当有问题需要调试时,才
需要保留信息。
您也可以使用 PSM_DEBUG_LOG 环境变量来指定您环境(例如,单个会话)的调试日志
的位置。

PSM_LOG_POOL 配置参数
使用 PSM_LOG_POOL 配置参数可更改 GBase 8s 主存储管理器 用于放置备份与恢复日
志数据的池的名称。
onconfig.std 值
LOGPOOL
生效

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 240 -
当 onpsm 实用程序启动时
通过运行 onmode -wf 命令在 onconfig 文件中动态重置该值时。
通过运行 onmode -wm 命令重置会话的值时。
用途
存储管理器会自动将日志数据放入 LOGPOOL 或您指定的池内。
您可以使用字母和数字的
任意组合。
也可以使用 PSM_LOG_POOL 环境变量来更改您环境(例如,单个会话)的池的名称。

SQL 格式化
...........................................
150