返回首页

gbase数据、南大通用产品文档:GBase8s连接管理器代理方式和重定向方式

更新日期:2024年09月11日

连接管理器可以重定向客户机连接请求或充当代理服务器并处理所有客户机/服务器通信。
使用服务级别协议 MODE=REDIRECT 或 MODE=PROXY 属性可指定连接管理器如何处
理客户机连接请求。
图: 在服务级别协议中设置重定向方式



GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 454 -
在重定向方式下,连接管理器将相应服务器节点、IP 地址和端口号返回给发出连接请求
的客户机应用程序。然后,客户机应用程序使用连接管理器提供的 IP 地址和端口号来连
接到指定的数据库服务器。
图: 服务级别协议中的 MODE=PROXY


在代理方式下,连接管理器充当代理服务器,并管理客户机与数据库服务器的通信。当客
户机应用程序无法连接到位于防火墙后面的数据库服务器时,请使用代理方式。要避免连
接管理器成为单个故障点,在使用代理方式时,请配置多个连接管理器实例。

Error in timestamp format
无效的时间戳格式被传送到 JDBC 转义子句。该时间戳字符的转义子句具有以下格式:{ts
'yyyy-mm-dd hh:mm:ss.f...'}。

WHILE 与 FOR 语句都可在 SPL 例程中创建执行循环。WHILE 循环以
WHILE condition 开始,只要条件为真就执行语句块,并以 END WHILE 结束。
下图展示有效的 WHILE 条件。只要在 WHILE 语句中指定的条件为真,例程就执行
WHILE 循环。
图: 只要在 WHILE 语句中指定的条件为真,例程就执行 WHILE 循环。
CREATE PROCEDURE test_rows( num INT )

DEFINE i INTEGER;
LET i = 1;

WHILE i < num
INSERT INTO table1 (numbers) VALUES (i);
LET i = i + 1;
END WHILE;

END PROCEDURE;
前图中的 SPL 例程接受整数作为参数,然后在它每一次执行 WHILE 循环时,就将整数
值插入到 table1 的 numbers 列内。插入的值从 1 开始,且增大到 num - 1。
请当心,不要创建无限的循环,如下图所示。
图: 接受整数为参数,然后将整数值插入到 numbers 列的例程。
CREATE PROCEDURE endless_loop()

DEFINE i INTEGER;
LET i = 1;

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 286 -

WHILE ( 1 = 1 ) -- don't do this!
LET i = i + 1;
INSERT INTO table1 VALUES (i);
END WHILE;

END PROCEDURE;
FOR 循环从 FOR 语句扩展到 END FOR 语句,
并执行在 FOR 语句中定义的指定次数的
迭代。下图展示在 FOR 循环中定义迭代的几种方式。
对于 FOR 循环的每一迭代,重置迭代变量(在后面的示例中声明为 i),并以该变量的新
值执行该循环内的语句。
图: 定义 FOR 循环中的迭代。
FOR i = 1 TO 10
. . .
END FOR;

FOR i = 1 TO 10 STEP 2
. . .
END FOR;

FOR i IN (2,4,8,14,22,32)
. . .
END FOR;

FOR i IN (1 TO 20 STEP 5, 20 to 1 STEP -5, 1,2,3,4,5)
. . .
END FOR:
在第一个示例中,只要 i 介于 1 之间 10,包括 1 与 10,该 SPL 过程就执行 FOR 循环。
在第二个示例中,i 从 1 到 3、5、7,等等递进,但从不超过 10。第三个示例检查 i 是否在
定义了的值集之内。
在第四个示例中,
当 i 为 1、
6、
11、
16、
20、
15、
10、
5、
1、
2、
3、
4 或 5 时,
该 SPL 过程执行循环——换言之,执行循环 13 次。
提示: WHILE 循环与 FOR 循环之间的主要差异是,FOR 循环保证会结束,但 WHILE 循环
不然。FOR 语句指定循环执行的确切次数,除非语句导致例程退出该循环。使用 WHILE,可
能创建无限的循环。