返回首页

gbase数据、南大通用产品文档:GBase8sPSORT_DBTEMP 环境变量

更新日期:2024年09月11日

PSORT_DBTEMP 环境变量指定数据库服务器将环境变量用于执行排序的临时文件写入
的位置。

pathname 排序期间用于中间写操作的 UNIX™ 目录的名称。
要设置 PSORT_DBTEMP 环境变量以指定该目录(例如:/usr/leif/tempsort),输入
以下命令:
setenv PSORT_DBTEMP /usr/leif/tempsort
要获取最佳性能,请指定在不同磁盘上的文件系统中的目录。
您还可能想要考虑设置环境变量 DBSPACETEMP 以放置在数据库空间中进行排序时
使用的临时文件而不是操作系统文件。请参阅 DBSPACETEMP 环境变量中对
DBSPACETEMP 环境变量的讨论。
数据库服务器使用 PSORT_DBTEMP 指定的目录,即使未设置 PSORT_NPROCS 环
境变量也是如此。有关 PSORT_DBTEMP 环境变量的更多信息,请参阅《GBase 8s 管理
员指南》和《GBase 8s 性能指南》。


GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 303 -
假设您想要您的 SPL 例程从存储在集合变量内的集合选择元素,
则请一次选择一个,
以便
于您可处理这些元素。
要在集合的元素间移动,
您首先需要使用 FOREACH 语句来声明游标,
就如同您会声明游
标来在一组行间一同一样。
下图展示 FOREACH 和 END FOREACH 语句,
在它们之间还
没有语句。
图: FOREACH 和 END FOREACH 语句。
FOREACH cursor1 FOR
. . .
END FOREACH
在 FOREACH 循环 和 GBase 8s SQL 指南:语法 中描述 FOREACH 语句。
下一主题,集合查询,描述在 FOREACH 与 END FOREACH 语句之间省略的那些语句。

下列部分中的示例是基于 图 2 的 polygons 表的。

集合查询
在您在 FOREACH 与 END FOREACH 语句之间声明游标之后,
请您输入称为集合查询的
特殊的、受限形式的 SELECT 语句。
集合查询是使用后跟集合变量的名称的 FROM TABLE 关键字的 SELECT 语句。下图展
示此结构,称其为集合派生的表。
图: 集合派生的表。
FOREACH cursor1 FOR

SELECT * INTO pnt FROM TABLE(vertexes)
. . .
END FOREACH
该 SELECT 语句使用集合变量 vertexes 作为集合派生的表。
您可将集合派生的表视为一列
的表,
该集合的每一元素都是表的一行。
例如,
您可将存储在 vertexes 中的四个点的 SET 可
视化作为带有四行的表,诸如下图展示的一个。
图: 带有四行的表。
'(3.0,1.0)'
'(8.0,1.0)'
'(3.0,4.0)'
'(8.0,4.0)'
在前图中的 FOREACH 语句的第一个迭代之后,
该集合查询选择 vertexes 中的第一个元素,
并将其存储在 pnt 中,因此,pnt 包含值 '(3.0,1.0)'。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 304 -
提示: 由于集合变量 vertexes 包含 SET,而不是 LIST,因此,vertexes 中的元素没有定义了的
顺序。在真实的数据库中,值 '(3.0,1.0)' 可能不是 SET 中的第一个元素。
将集合查询添加至 SPL 例程
现在,您可将以 FOREACH 定义的游标和集合查询添加至 SPL 例程,如下例所示。
图: 以 FOREACH 定义的游标和集合查询。
CREATE PROCEDURE shapes()

DEFINE vertexes SET( point NOT NULL );
DEFINE pnt point;

SELECT definition INTO vertexes FROM polygons
WHERE id = 207;

FOREACH cursor1 FOR
SELECT * INTO pnt FROM TABLE(vertexes)
. . .
END FOREACH
. . .
END PROCEDURE;
以上展示的语句形成处理集合变量的元素的 SPL 例程的框架。要将集合分解为它的元素,
请使用集合派生的表。在将集合分解为它的元素之后,该例程可单独地访问元素作为集合
派生的表的行。既然您已选择了 pnt 中的一个元素,您就可更新或删除那个元素,如 更新
集合元素 和 删除集合元素 描述的那样。
要了解集合查询的完整语法,请参阅《GBase 8s SQL 指南:语法》 中的 SELECT 语句。
要了解集合派生的表的语法,请参阅《GBase 8s SQL 指南:语法》 中的“集合派生的表”
段。
提示:
如果您正在从不包含元素或包含零元素的集合选择,
则您可使用未声明游标的集合查询。
然而,如果该集合包含多个元素,且您未使用游标,则您会收到错误消息。
注意: 在上述程序段中,如果 FOREACH 游标定义内的查询(
SELECT * INTO pnt FROM TABLE(vertexes)
)已以分号(;)作为语句终止符终止了,则数据库服务器可能已发出了语法错误。在此,
END FOREACH 关键字是逻辑的语句终止符。

函数说明
返回date 中当前月对应的最后一天的值。其中,date 为日期或日期时间类型。如
果参数date 无效,则返回NULL。
示例
示例1:date 值为有效日期,返回2020 年8 月份的最后一天。
gbase> SELECT LAST_DAY('2020-08-30') FROM dual;
+------------------------+
| LAST_DAY('2020-08-30') |
+------------------------+
| 2020-08-31
|
+------------------------+
1 row in set
示例2:date 值为有效日期,返回2020 年2 月份的最后一天。
gbase> SELECT LAST_DAY('2020-02-05') FROM dual;
+------------------------+
| LAST_DAY('2020-02-05') |
+------------------------+
| 2020-02-29
|
+------------------------+
1 row in set
示例3:date 值为日期时间类型的有效日期,返回2020 年1 月份的最后一天。
gbase> SELECT LAST_DAY('2020-01-01 01:01:01') FROM dual;
+---------------------------------+
| LAST_DAY('2020-01-01 01:01:01') |
+---------------------------------+
| 2020-01-31
|
+---------------------------------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
802
1 row in set
示例4:date 值为无效日期,返回结果为NULL。
gbase> SELECT LAST_DAY('2020-08-32') FROM dual;
+------------------------+
| LAST_DAY('2020-08-32') |
+------------------------+
| NULL
|
+------------------------+
1 row in set, 1 warning (Elapsed: 00:00:00.02)
gbase> SHOW WARNINGS;
+-------+------+------------------------------------------------------------+
| Level | Code | Message
|
+-------+------+------------------------------------------------------------+
| Note
| 1292 | 172.168.83.11:5050 - Incorrect datetime value: '2020-08-32' |
+-------+------+------------------------------------------------------------+2 row in set