返回首页

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

更新日期:2024年09月11日

GBase 8a MPP Cluster 支持用户变量。
用户变量的生命周期是会话级的,
对其它会
话不可见。当用户退出时,此用户的所有用户变量会自动释放。
用户变量的书写规则是:@var_name。
通过SET 语法来定义并为变量赋值:
SET @var_name = expr [, @var_name = expr] ...
“=”是赋值操作符。赋给每一个变量的expr 值可以是实数、字符串或NULL。
通过SELECT 语法查看用户变量的值:
SELECT @var_name [, @var_name] ...
示例
示例1:使用SET 语句为变量赋值。
gbase> SET @t1='abc',@t2=null,@t3=4;
Query OK, 0 rows affected
gbase> SELECT @t1,@t2,@t3;
+------+------+------+
| @t1
| @t2
| @t3
|
+------+------+------+
| abc
| NULL |
4 |
+------+------+------+
1 row in set
用户变量可以用于表达式所允许的任何地方。如果用户使用的变量没有初始化,
那么它的值就为NULL。
注意

常量的上下文中不能使用变量,
例如,
在SELECT 的LIMIT 子句中。

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

(1 row)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
401

gs_deployment()
描述:当前系统的部署形态信息。
返回值类型:text
示例:
gbase=# select gs_deployment();
gs_deployment
-----------------------
OpenSourceCentralized
(1 row)

get_hostname()
描述:返回当前节点的hostname。
返回值类型:text
示例:
gbase=# SELECT get_hostname();
get_hostname
--------------
gbase8c_7_16
(1 row)

get_nodename()
描述:返回当前节点的名字。
返回值类型:text
示例:
gbase=# SELECT get_nodename();
get_nodename
--------------
dn1
(1 row)

get_schema_oid(cstring)
描述:返回查询schema 的oid。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
402
返回值类型:oid
示例:
gbase=# SELECT get_schema_oid('public');
get_schema_oid
----------------
2200
(1 row)

get_client_info()
描述:返回客户端信息。
返回值类型:record

为j 值相同,
所以avg 值相同,
计算过程为avg = (8 + 4 + 6) / 3 = 6,
i=2,
j=1,
k=4
时,avg=5.5,计算过程为avg = (8 + 4 + 6 + 4) / 4 = 5.5。
示例2:AVG(DISTINCT k) OVER(PARTITION BY i)
gbase> SELECT *,AVG(DISTINCT k) OVER(PARTITION BY i) AS avg
FROM t1;
+------+------+------+--------+
| i
| j
| k
| avg
|
+------+------+------+--------+
|
2 |
3 |
6 | 6.0000 |
|
2 |
3 |
4 | 6.0000 |
|
2 |
5 |
8 | 6.0000 |
|
2 |
1 |
4 | 6.0000 |
|
3 |
2 |
2 | 5.0000 |
|
3 |
2 |
4 | 5.0000 |
|
3 |
2 |
2 | 5.0000 |
|
3 |
4 |
6 | 5.0000 |
|
3 |
1 |
2 | 5.0000 |
|
3 |
5 |
8 | 5.0000 |

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
893
+------+------+------+--------+
10 rows in set
用例分析:首先根据i 分组,由于没有ORDER BY 部分,则同组内的累加和、
COUNT 值都相等,将同组内的k 值进行累加同时计算COUNT 值,如果遇到不
同组,从0 重新开始。
以i 值为2、2、2、2,j 值为5、3、3、1,k 值为8、4、6、4,avg 值为6、6、6、
6 为例,因为在这4 组数值中,不同的k 值为6、4、8,所以avg= (6 + 4 + 8) / 3 =
6。