返回首页

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

更新日期:2024年09月11日

功能说明
GBase 8a MPP Cluster 使用CASE 结构处理多路分支的情况。
注意

CASE 计算也依靠上下文。如果是字符串上下文,返回的结果作为一个字
符串,如果是数值上下文,返回结果是数值。
语法格式
语法格式1
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE;
表5- 176 参数说明
参数名称


Case_value
待匹配值
When_value
匹配值,如果匹配,则相应的statement_list 语句将被执行。
statement_list
要执行的SQL 语句集合,
可以是一个语句也可以是多个语句。
ELSE statement_list
如果前面所有的when_value 都没有匹配,将执行ELSE 子句
中的语句列表。
语法格式2
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE;
表5- 177 参数说明
参数名称


search_condition
匹配条件,如果为真,相应的statement_list 将被执行。
statement_list
要执行的SQL 语句集合,
可以是一个语句也可以是多个语句。
ELSE statement_list
如果前面所有的search_conditione 都没有匹配,将执行ELSE
子句中的语句列表。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1357
示例
示例1:CASE 后无Case_value。
gbase> delimiter //
gbase> CREATE PROCEDURE casedemo(in para int,out x varchar(100))
begin
case
when para=1 then set x='true';
when para=0 then set x='false';
else set x='error';
end case;
end //
Query OK, 0 rows affected (Elapsed: 00:00:00.03)
gbase> delimiter ;
gbase> call casedemo(1,@result);
Query OK, 0 rows affected (Elapsed: 00:00:00.03)
gbase> select @result;
+---------+
| @result |
+---------+
| true
|
+---------+
1 row in set (Elapsed: 00:00:00.00)
示例2:CASE 后有Case_value。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1358
gbase> DELIMITER //
gbase> CREATE PROCEDURE casedemo(in para int,out x varchar(100))
begin
case para
when 1 then set x='true';
when 0 then set x='false';
else set x='error';
end case;
end //
Query OK, 0 rows affected (Elapsed: 00:00:00.08)
gbase> delimiter ;
gbase> call casedemo(1,@result);
Query OK, 0 rows affected (Elapsed: 00:00:00.02)
gbase> select @result;
+---------+
| @result |
+---------+
| true
|
+---------+
1 row in set (Elapsed: 00:00:00.00)
gbase> call casedemo(2,@result);
Query OK, 0 rows affected (Elapsed: 00:00:00.03)

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1359
gbase> select @result;
+---------+
| @result |
+---------+
| error
|
+---------+
1 row in set (Elapsed: 00:00:00.00)

使用 DEADLOCK_TIMEOUT 配置参数来指定数据库服务器可等待获取锁的最大秒数。
仅为涉及远程数据库服务器的分布式查询使用此参数。对非分布式查询不使用此参数。
onconfig.std 值
DEADLOCK_TIMEOUT 60

正整数
单位

生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行 onmode -wf 命令在 onconfig 文件中动态地重置该值时。
当您通过运行 onmode -wm 命令设置内存中的该值时。
用法
如果分布式事务被强制等待的时间大于 DEADLOCK_TIMEOUT 配置参数指定的秒数时,
则拥有该事务的线程假定存在多服务器死锁。

示例
建表语句:
CREATE TABLE t (i INT, vc VARCHAR(10), dt DATETIME
DEFAULT '2000-01-01 00:00:01', dt1 DATETIME DEFAULT
'2000-01-01 00:00:01');

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1200
数据文件:
31589,E,02:02:02 2094-12-13,2082-12-24 01:01:01
16993,jcWaz,02:02:02 2060-10-22,2037-11-17 01:01:01
7584,jubNKAmT,02:02:02 2058-12-24,2066-11-26 01:01:01
8698,iOStkY,02:02:02 2024-11-17,2064-10-25 01:01:01
23256,itWsHqL,02:02:02 2069-10-24,2021-11-19 01:01:01
21932,GelDJbuE,02:02:02 2017-11-26,2075-11-19 01:01:01
4859,Gl,02:02:02 2040-10-16,2051-10-25 01:01:01
11751,InTUcdIM,02:02:02 2048-12-23,2099-10-26 01:01:01
8487,JZ,02:02:02 2026-12-13,2084-11-15 01:01:01
3693,lEKyI,02:02:02 2063-10-21,2026-11-20 01:01:01
加载过程:
gbase> LOAD DATA INFILE 'ftp://192.168.88.141/load_data/table_fields.tbl'
INTO TABLE test.t fields terminated by ',' TABLE_FIELDS 'i, vc, dt date
"%H:%i:%s %Y-%m-%d", dt1 date "%Y-%m-%d %H:%i:%s"';
Query OK, 10 rows affected, 0 warnings (Elapsed: 00:00:01.48)
Task 1114 finished, Loaded 10 records, Skipped 0 records
查询入库数据:
gbase> SELECT * FROM Test.t;
+-------+----------+---------------------+---------------------+
| i
| vc
| dt
| dt1
|
+-------+----------+---------------------+---------------------+
| 23256 | itWsHqL
| 2069-10-24 02:02:02 | 2021-11-19 01:01:01 |
| 31589 | E
| 2094-12-13 02:02:02 | 2082-12-24 01:01:01 |
|
8487 | JZ
| 2026-12-13 02:02:02 | 2084-11-15 01:01:01 |
| 21932 | GelDJbuE | 2017-11-26 02:02:02 | 2075-11-19 01:01:01 |
| 16993 | jcWaz
| 2060-10-22 02:02:02 | 2037-11-17 01:01:01 |
|
3693 | lEKyI
| 2063-10-21 02:02:02 | 2026-11-20 01:01:01 |
| 11751 | InTUcdIM | 2048-12-23 02:02:02 | 2099-10-26 01:01:01 |
|
8698 | iOStkY
| 2024-11-17 02:02:02 | 2064-10-25 01:01:01 |
|
4859 | Gl
| 2040-10-16 02:02:02 | 2051-10-25 01:01:01 |
|
7584 | jubNKAmT | 2058-12-24 02:02:02 | 2066-11-26 01:01:01 |
+-------+----------+---------------------+---------------------+
10 rows in set