云数据库 GAUSSDB-FETCH:示例

时间:2024-04-26 16:15:03

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
--创建一个schema。
gaussdb=# CREATE SCHEMA tpcds;
 
--创建表tpcds.customer_address。
gaussdb=# CREATE TABLE tpcds.customer_address
(
ca_address_sk         INTEGER           NOT NULL,
ca_address_id         CHARACTER(16)     NOT NULL,
ca_street_number      INTEGER                    ,
ca_street_name        CHARACTER (20)
);
 
--向表中插入多条记录。
gaussdb=# INSERT INTO tpcds.customer_address VALUES (1, 'AAAAAAAABAAAAAAA', '18', 'Jackson'),(2, 'AAAAAAAACAAAAAAA', '362', 'Washington 6th'),(3, 'AAAAAAAADAAAAAAA', '585', 'Dogwood Washington');

--SELECT语句,用一个游标读取一个表。开始一个事务。
gaussdb=# START TRANSACTION;

--建立一个名为cursor1的游标。
gaussdb=# CURSOR cursor1 FOR SELECT * FROM tpcds.customer_address ORDER BY 1;

--抓取头3行到游标cursor1里。
gaussdb=# FETCH FORWARD 3 FROM cursor1;
 ca_address_sk |  ca_address_id   | ca_street_number |   ca_street_name      
---------------+------------------+------------------+--------------------
             1 | AAAAAAAABAAAAAAA | 18               | Jackson                           
             2 | AAAAAAAACAAAAAAA | 362              | Washington 6th                    
             3 | AAAAAAAADAAAAAAA | 585              | Dogwood Washington        
(3 rows)

--关闭游标并提交事务。
gaussdb=# CLOSE cursor1;

--结束一个事务。
gaussdb=# END;

--VALUES子句,用一个游标读取VALUES子句中的内容。开始一个事务。
gaussdb=# START TRANSACTION;

--建立一个名为cursor2的游标。
gaussdb=# CURSOR cursor2 FOR VALUES(1,2),(0,3) ORDER BY 1;

--抓取头2行到游标cursor2里。
gaussdb=# FETCH FORWARD 2 FROM cursor2;
column1 | column2
---------+---------
0 |       3
1 |       2
(2 rows)

--关闭游标并提交事务。
gaussdb=# CLOSE cursor2;

--结束一个事务。
gaussdb=# END;

--WITH HOLD游标的使用,开启事务。
gaussdb=# START TRANSACTION;

--创建一个with hold游标。
gaussdb=# DECLARE cursor1 CURSOR WITH HOLD FOR SELECT * FROM tpcds.customer_address ORDER BY 1;

--抓取头2行到游标cursor1里。
gaussdb=# FETCH FORWARD 2 FROM cursor1;
 ca_address_sk |  ca_address_id   | ca_street_number |   ca_street_name      
---------------+------------------+------------------+--------------------
             1 | AAAAAAAABAAAAAAA | 18               | Jackson                           
             2 | AAAAAAAACAAAAAAA | 362              | Washington 6th                    
(2 rows)

--结束事务。
gaussdb=# END;

--抓取下一行到游标cursor1里。
gaussdb=# FETCH FORWARD 1 FROM cursor1;
 ca_address_sk |  ca_address_id   | ca_street_number |   ca_street_name      
---------------+------------------+------------------+--------------------
             3 | AAAAAAAADAAAAAAA | 585              | Dogwood Washington        
(1 row)

--关闭游标。
gaussdb=# CLOSE cursor1;

--删除表tpcds.customer_address。
gaussdb=# DROP TABLE tpcds.customer_address;

--删除SCHEMA。
gaussdb=# DROP SCHEMA tpcds CASCADE;
support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0603.html