云服务器内容精选

  • 语法格式 MOVE [ direction [ FROM | IN ] ] cursor_name; 其中direction子句为可选参数。 NEXT | PRIOR | FIRST | LAST | ABSOLUTE count | RELATIVE count | count | ALL | FORWARD | FORWARD count | FORWARD ALL | BACKWARD | BACKWARD count | BACKWARD ALL
  • 示例 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 --建表并插入数据。 gaussdb=# CREATE TABLE tbl_test(c1 int); gaussdb=# INSERT INTO tbl_test VALUES (generate_series(1,20)); --建立一个名为cursor1的游标。 gaussdb=# BEGIN; gaussdb=# CURSOR cursor1 FOR SELECT * FROM tbl_test ORDER BY 1; --使用MOVE命令使游标向后移动5行,不返回结果。 gaussdb=# MOVE FORWARD 5 FROM cursor1; MOVE 5 --使用FETCH命令检索两行数据。 gaussdb=# FETCH FORWARD 2 FROM cursor1; c1 ---- 6 7 (2 rows) --关闭游标并结束事务。 gaussdb=# CLOSE cursor1; gaussdb=# END; --删除。 gaussdb=# DROP TABLE tbl_test;
  • 示例 -- 创建目标表products和源表newproducts,并插入数据 gaussdb=# CREATE TABLE products ( product_id INTEGER, product_name VARCHAR2(60), category VARCHAR2(60) ); gaussdb=# INSERT INTO products VALUES (1501, 'vivitar 35mm', 'electrncs'); gaussdb=# INSERT INTO products VALUES (1502, 'olympus is50', 'electrncs'); gaussdb=# INSERT INTO products VALUES (1600, 'play gym', 'toys'); gaussdb=# INSERT INTO products VALUES (1601, 'lamaze', 'toys'); gaussdb=# INSERT INTO products VALUES (1666, 'harry potter', 'dvd'); gaussdb=# CREATE TABLE newproducts ( product_id INTEGER, product_name VARCHAR2(60), category VARCHAR2(60) ); gaussdb=# INSERT INTO newproducts VALUES (1502, 'olympus camera', 'electrncs'); gaussdb=# INSERT INTO newproducts VALUES (1601, 'lamaze', 'toys'); gaussdb=# INSERT INTO newproducts VALUES (1666, 'harry potter', 'toys'); gaussdb=# INSERT INTO newproducts VALUES (1700, 'wait interface', 'books'); -- 进行MERGE INTO操作 gaussdb=# MERGE INTO products p USING newproducts np ON (p.product_id = np.product_id) WHEN MATCHED THEN UPDATE SET p.product_name = np.product_name, p.category = np.category WHERE p.product_name != 'play gym' WHEN NOT MATCHED THEN INSERT VALUES (np.product_id, np.product_name, np.category) WHERE np.category = 'books'; MERGE 4 -- 查询更新后的结果 gaussdb=# SELECT * FROM products ORDER BY product_id; product_id | product_name | category ------------+----------------+----------- 1501 | vivitar 35mm | electrncs 1502 | olympus camera | electrncs 1600 | play gym | toys 1601 | lamaze | toys 1666 | harry potter | toys 1700 | wait interface | books (6 rows) -- 删除表 gaussdb=# DROP TABLE products; gaussdb=# DROP TABLE newproducts;
  • 参数说明 plan_hint子句 以/*+ */的形式在MERGE关键字后,用于对MERGE对应的语句块生成的计划进行hint调优,详细用法请参见章节使用Plan Hint进行调优。每条语句中只有第一个/*+ plan_hint */注释块会作为hint生效,里面可以写多条hint。 INTO子句 指定正在更新或插入的目标表。 table_name 目标表的表名。 partition_clause 指定分区MERGE操作。 关键字详见SELECT一节介绍。 如果value子句的值和指定分区不一致,会抛出异常。 示例详见CREATE TABLE SUBPARTITION。 alias 目标表的别名。 取值范围:字符串,符合标识符命名规范。 USING子句 指定源表,源表可以为表、视图或子查询。 ON子句 关联条件,用于指定目标表和源表的关联条件。不支持更新关联条件中的字段。 WHEN MATCHED子句 当源表和目标表中数据针对关联条件可以匹配上时,选择WHEN MATCHED子句进行UPDATE操作。 不支持更新系统表、系统列。 WHEN NOT MATCHED子句 当源表和目标表中数据针对关联条件无法匹配时,选择WHEN NOT MATCHED子句进行INSERT操作。 不支持INSERT子句中包含多个VALUES。 WHEN MATCHED和WHEN NOT MATCHED子句顺序可以交换,可以缺省其中一个,但不能同时缺省,不支持同时指定两个WHEN MATCHED或WHEN NOT MATCHED子句。 DEFAULT 用对应字段的缺省值填充该字段。 如果没有缺省值,则为NULL。 WHERE condition UPDATE子句和INSERT子句的条件,只有在条件满足时才进行更新操作,可缺省。不支持WHERE条件中引用系统列。不建议使用int等数值类型作为condition,因为int等数值类型可以隐式转换为bool值(非0值隐式转换为true,0转换为false),可能导致非预期的结果。
  • 语法格式 MERGE [/*+ plan_hint */] INTO table_name [ partition_clause ] [ [ AS ] alias ] USING { { table_name | view_name } | subquery } [ [ AS ] alias ] ON ( condition ) [ WHEN MATCHED THEN UPDATE SET { column_name = { expression | subquery | DEFAULT } | ( column_name [, ...] ) = ( { expression | subquery | DEFAULT } [, ...] ) } [, ...] [ WHERE condition ] ] [ WHEN NOT MATCHED THEN INSERT { DEFAULT VALUES | [ ( column_name [, ...] ) ] VALUES ( { expression | subquery | DEFAULT } [, ...] ) [, ...] [ WHERE condition ] } ];
  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 MERGE [/*+ plan_hint */] INTO table_name [ [ AS ] alias ] USING { { table_name | view_name } | subquery } [ [ AS ] alias ] ON ( condition ) [ WHEN MATCHED THEN UPDATE SET { column_name = { expression | DEFAULT } | ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] [ WHERE condition ] ] [ WHEN NOT MATCHED THEN INSERT { DEFAULT VALUES | [ ( column_name [, ...] ) ] VALUES ( { expression | DEFAULT } [, ...] ) [, ...] [ WHERE condition ] } ];
  • 参数说明 plan_hint子句 以/*+ */的形式在MERGE关键字后,用于对MERGE对应的语句块生成的计划进行hint调优,详细用法请参见章节使用Plan Hint进行调优。每条语句中只有第一个/*+ plan_hint */注释块会作为hint生效,里面可以写多条hint。 INTO子句 指定正在更新或插入的目标表。目标表为复制表时,暂不支持目标表中某列默认值为volatile函数(如自增列),enable_stream_operator=off时目标表需要包含主键或带有unique not null。 table_name 目标表的表名。 alias 目标表的别名。 取值范围:字符串,符合标识符命名规范。 USING子句 指定源表,源表可以为表、视图或子查询。目标表为复制表时,暂不支持USING子句中包含非复制表。 ON子句 关联条件,用于指定目标表和源表的关联条件。不支持更新关联条件中的字段。 WHEN MATCHED子句 当源表和目标表中数据针对关联条件可以匹配上时,选择WHEN MATCHED子句进行UPDATE操作。 不支持更新分布列。不支持更新系统表、系统列。 WHEN NOT MATCHED子句 当源表和目标表中数据针对关联条件无法匹配时,选择WHEN NOT MATCHED子句进行INSERT操作。 不支持INSERT子句中包含多个VALUES。 WHEN MATCHED和WHEN NOT MATCHED子句顺序可以交换,可以缺省其中一个,但不能同时缺省,不支持同时指定两个WHEN MATCHED或WHEN NOT MATCHED子句。 DEFAULT 用对应字段的缺省值填充该字段。 如果没有缺省值,则为NULL。 WHERE condition UPDATE子句和INSERT子句的条件,只有在条件满足时才进行更新操作,可缺省。不支持WHERE条件中引用系统列。不建议使用int等数值类型作为condition,因为int等数值类型可以隐式转换为bool值(非0值隐式转换为true,0转换为false),可能导致非预期的结果。
  • 示例 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 -- 创建目标表products和源表newproducts,并插入数据 gaussdb=# CREATE TABLE products ( product_id INTEGER, product_name VARCHAR2(60), category VARCHAR2(60) ); gaussdb=# INSERT INTO products VALUES (1501, 'vivitar 35mm', 'electrncs'); gaussdb=# INSERT INTO products VALUES (1502, 'olympus is50', 'electrncs'); gaussdb=# INSERT INTO products VALUES (1600, 'play gym', 'toys'); gaussdb=# INSERT INTO products VALUES (1601, 'lamaze', 'toys'); gaussdb=# INSERT INTO products VALUES (1666, 'harry potter', 'dvd'); gaussdb=# CREATE TABLE newproducts ( product_id INTEGER, product_name VARCHAR2(60), category VARCHAR2(60) ); gaussdb=# INSERT INTO newproducts VALUES (1502, 'olympus camera', 'electrncs'); gaussdb=# INSERT INTO newproducts VALUES (1601, 'lamaze', 'toys'); gaussdb=# INSERT INTO newproducts VALUES (1666, 'harry potter', 'toys'); gaussdb=# INSERT INTO newproducts VALUES (1700, 'wait interface', 'books'); -- 进行MERGE INTO操作 gaussdb=# MERGE INTO products p USING newproducts np ON (p.product_id = np.product_id) WHEN MATCHED THEN UPDATE SET p.product_name = np.product_name, p.category = np.category WHERE p.product_name != 'play gym' WHEN NOT MATCHED THEN INSERT VALUES (np.product_id, np.product_name, np.category) WHERE np.category = 'books'; MERGE 4 -- 查询更新后的结果 gaussdb=# SELECT * FROM products ORDER BY product_id; product_id | product_name | category ------------+----------------+----------- 1501 | vivitar 35mm | electrncs 1502 | olympus camera | electrncs 1600 | play gym | toys 1601 | lamaze | toys 1666 | harry potter | toys 1700 | wait interface | books (6 rows) -- 删除表 gaussdb=# DROP TABLE products; gaussdb=# DROP TABLE newproducts;
  • 示例 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 --建表并插入数据。 gaussdb=# CREATE TABLE tbl_test(c1 int); gaussdb=# INSERT INTO tbl_test VALUES (generate_series(1,20)); --建立一个名为cursor1的游标。 gaussdb=# BEGIN; gaussdb=# CURSOR cursor1 FOR SELECT * FROM tbl_test ORDER BY 1; --使用MOVE命令使游标向后移动5行,不返回结果。 gaussdb=# MOVE FORWARD 5 FROM cursor1; MOVE 5 --使用FETCH命令检索两行数据。 gaussdb=# FETCH FORWARD 2 FROM cursor1; c1 ---- 6 7 (2 rows) --关闭游标并结束事务。 gaussdb=# CLOSE cursor1; gaussdb=# END; --删除。 gaussdb=# DROP TABLE tbl_test;
  • 语法格式 1 MOVE [ direction [ FROM | IN ] ] cursor_name; 其中direction子句为可选参数。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 NEXT | PRIOR | FIRST | LAST | ABSOLUTE count | RELATIVE count | count | ALL | FORWARD | FORWARD count | FORWARD ALL | BACKWARD | BACKWARD count | BACKWARD ALL
  • 请求示例 HTTP的示例 POST /v1/netcfg/sites/dfs-groups/13874933-09ae-cfff-9883-bcaa33422118/m-lags HTTPS 1.1 Host:192.168.1.125:18002 Content-Type: application/json Accept: application/json Accept-Language: en-US X-AC CES S-TOKEN:CA48D152F6B19D84:637C38259E6974E17788348128A430FEE150E874752CE754B6BF855281219925 { "dfsGroupName": "MLAG01", "mode": "active-active", "peerLink": [ { "deviceId": "cfff4933-39aa-cfaf-9833-bcaa13874933", "deviceName": "device1", "ifName": "Eth-Trunk1", "priority": 150, "peerDeviceId": "09ae4933-196e-cfef-9183-bcaa13874a3c", "peerDeviceName": "device2", "peerIfName": "Eth-Trunk1", "peerPriority": 100 }], "mLagMemberList": [ { "mLagId": "1", "mLagMemberlink": { "deviceId": "cfff4933-39aa-cfaf-9833-bcaa13874933", "deviceName": "device1", "ifName": "Eth-Trunk2", "peerDeviceId": "09ae4933-196e-cfef-9183-bcaa13874a3c", "peerDeviceName": "device2", "peerIfName": "Eth-Trunk2", } }] }
  • 响应示例 返回状态码为204:初始化配置成功 HTTP/1.1 204 No Content Date: Sun,11 May 2025 10:00:00 GMT Server: example-server Content-Type: application/json;charset=UTF-8 Content-Length: 250 Connection: keep-alive 返回状态码为400:参数校验异常 HTTP/1.1 400 Bad Request Date: Sun,11 May 2025 10:00:00 GMT Server: example-server Content-Type: application/json;charset=UTF-8 Content-Length: 250 Connection: keep-alive 返回状态码为500:服务内部错误。 HTTP/1.1 500 Internal Server Error Date: Sun,11 May 2025 10:00:00 GMT Server: example-server Content-Type: application/json;charset=UTF-8 Content-Length: 250 Connection: keep-alive
  • 请求参数 表2 body参数列表 参数名称 必选 类型 参数值域 默认值 参数说明 参数示例 mlagConfiguration 是 REFERENCE 详细请参见表3。 Dfs-Group、Peer-Link以及成员口相关的配置 - 表3 MlagConfigration对象的参数列表 参数名称 必选 类型 参数值域 默认值 参数说明 参数示例 dfsGroupName 否 string 0~64个字符。满足正则表达^[a-zA-Z0-9_.@-]+$。 - Dfs-Group组名称。 "dfsGroup1" mode 否 string 0~14个字符。满足正则表达active-standby|active-active。 active-active Dfs-Group组级别的工作模式,可不填,默认双活模式, 可指定主备模式。 "active-active" dualActiveDetectLink 否 REFERENCE 详细请参见表4。 配置双主检测链路。 - peerLink 否 ARRAY_REFERENCE 0-1个列表项,详细请参见表5。 为Dfs-Group指定的Peer-Link链路,仅能指定一条 - mLagMemberList 否 ARRAY_REFERENCE 0-1024个列表项,详细请参见表6。 成员列表。 - 表4 DualActiveDetectLink对象的参数列表 参数名称 必选 类型 参数值域 默认值 参数说明 参数示例 deviceId 否 string 0~36个字符。 - 设备ID,uuid格式。 "fbde1c5d-5b94-49e3-a912-48641015e45c" deviceName 否 string 0~64个字符。 - 本端设备名称。 "fw1" ifName 否 string 0~64个字符。 - 双主检测本端接口名称,物理口,非Eth-Trunk口。 "10GE 1/0/7" peerDeviceId 否 string 0~36个字符。 - 设备ID,uuid格式。 "fbde1c5d-5b94-49e3-a912-48641015e45d" peerDeviceName 否 string 0~64个字符。 - 对端设备名称。 "fw2" peerIfName 否 string 0~64个字符。 - 双主检测对端接口名称,物理口,非Eth-Trunk口。 "10GE 1/0/7" ipPoolName 否 string 0~32个字符。 - 为接口分配IP地址的资源池名称。 "CoreIpPool" 表5 MlagLinkDto对象的参数列表 参数名称 必选 类型 参数值域 默认值 参数说明 参数示例 deviceId 否 string 0~36个字符。 - 设备ID,uuid格式。 "fbde1c5d-5b94-49e3-a912-48641015e45c" deviceName 否 string 0~64个字符。 - 设备名称。 "fw1" ifName 否 string 0~64个字符。 - 设备名称。 "fw1" priority 否 int32 [1-254] 150 本端设备优先级。 100 peerDeviceId 否 string 0~36个字符。 - 设备ID,uuid格式。 "fbde1c5d-5b94-49e3-a912-48641015e45c" peerDeviceName 否 string 0~64个字符。 - 设备名称。 "fw1" peerIfName 否 string 0~64个字符。 - 设备名称。 "fw1" peerPriority 否 int32 [1-254] 100 对端设备优先级。 100 表6 MlagMembersDto对象的参数列表 参数名称 必选 类型 参数值域 默认值 参数说明 参数示例 mLagId 否 string 0~36个字符。 - M-LAG的组id。 "1" mLagMemberlink 否 REFERENCE 详细请参见表5。 M-LAG的成员链路。 -
  • URI /v1/devicemgr/devices/dfs-groups 表1 query参数列表 参数名称 必选 类型 参数值域 默认值 参数说明 参数示例 siteId 否 string 0~36个字符。 - 站点id,UUID格式,只有单站点和所有站点两种情况,为null查找所有站点 "9a79a511-94d0-4288-84ed-ab9710d2396c" keyword 否 string 0~64个字符。 - 模糊查询关键词,支持DfsGroup name的模糊查询 "dfs-group-name-1" pageIndex 否 int32 [1-10000] 1 分页查询分页索引,可选。可选择起始查询页,从1开始 10 pageSize 否 int32 [10-2500] 100 返回数据个数限制,默认值100,最大值2500 100
  • 响应参数 返回状态码为200:批量查询DfsGroup结果 表2 DfsGroupsQueryResponse对象的参数列表 参数名称 类型 参数值域 默认值 参数说明 参数示例 data ARRAY_REFERENCE 详细请参见表3。 DfsGroup数据 - totalCount int32 [0-100000] 0 总数 - 返回状态码为400:参数错误 详细信息请参见实际响应消息体。 返回状态码为500:服务内部错误 详细信息请参见实际响应消息体。