返回首页

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

更新日期:2024年09月11日

geqo_pool_size
参数说明:控制GEQO 使用池的大小,也就是基因全体中的个体数量。
该参数属于USERSET 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:整型,0~INT_MAX。
须知:
至少是2,
且有用的值一般在100 到1000 之间。
设置为00,表示使用系统自适应方式,
GBase 8c 会基于geqo_effort 和表的个数选取合适的值。
默认值:0

在 SPL 例程内,请使用 LET 语句将值分配给您已定义的变量。
如果您未赋值给变量,或通过传递给例程的参数,或通过 LET 语句,则该变量有未定义
的值。
未定义的值与 NULL 值不同。如果您尝试以 SPL 例程内未定义的值使用变量,则会收到
错误。
您可以下列任一方式赋值给例程变量:

使用 LET 语句。

使用 SELECT INTO 语句。

将 CALL 语句与带有 RETURNING 子句的过程一起使用。

使用 EXECUTE PROCEDURE INTO 或 EXECUTE FUNCTION INTO 语句。

LET 语句
以 LET 语句,您可以等号(=)和有效的表达式或函数名称来使用一个或多个变量名称。
下图中的每一示例都是有效的 LET 语句。
图: 有效的 LET 语句。
LET a = 5;
LET b = 6; LET c = 10;
LET a,b = 10,c+d;
LET a,b = (SELECT cola,colb
FROM tab1 WHERE cola=10);
LET d = func1(x,y);
GBase 8s 允许您将值分配给 opaque 类型变量、row 类型变量,或 row 类型的字段。您还
可将外部函数或另一 SPL 函数的值返回到 SPL 变量。
假设您定义命名的 row 类型 zip_t 和 address_t,如 图 1 所示。每当您定义 row 类型变量
时,您必须在可使用它之前初始化该变量。下图展示您可能如何定义和初始化 row 类型变
量。您可使用任何 row 类型值来初始化该变量。
图: 定义和初始化 row 类型变量。

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

DEFINE a address_t;
LET a = ROW ('A Street', 'Nowhere', 'AA',
ROW(NULL, NULL))::address_t
在您定义并初始化 row 类型变量之后,您可编写下图所示的 LET 语句。
图: 编写 LET 语句。
LET a.zip.z_code = 32601;
LET a.zip.z_suffix = 4555;
-- Assign values to the fields of address_t
提示: 请以 variable.field or variable.field.field 的形式使用点符号表示法来访问 row 类型的字
段,如 处理 row 类型数据 描述的那样。
假设您定义 opaque-type point,其包含定义二维点的两个值,且该值的文本表示为 '(x,y)'。
您还可能有计算圆的周长的函数 circum(),给定的点 '(x,y)' 和半径 r。
如果您定义以一点为圆心的 opaque 类型 center,以及计算圆的周长的函数 circum(),基于
点和半径,您可为每一变量编写变量声明。在下图中,c 是一个 opaque 类型变量,d 保存
外部函数 circum() 返回的值。
图: 编写变量声明。
DEFINE c point;
DEFINE r REAL;
DEFINE d REAL;

LET c = '(29.9,1.0)' ;
-- Assign a value to an opaque type variable

LET d = circum( c, r );
-- Assign a value returned from circum()
GBase 8s SQL 指南:语法 详细地描述 LET 语句的语法。

赋值给变量的其他方式
您可使用 SELECT 语句来从数据库访存一个值,并直接地将它分配给变量,如下图所示。

图: 从数据库访存一个值,并直接地将它分配给变量。
SELECT fname, lname INTO a, b FROM customer
WHERE customer_num = 101
请使用 CALL 或 EXECUTE PROCEDURE 语句来将由 SPL 函数或外部函数返回的值分
配给一个或多个 SPL 变量。您可能使用下图中的一个语句来将来自 SPL 函
数 read_address 的全名和地址返回到指定的 SPL 变量内。

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

图: 返回来自 SPL 函数的全名和地址。
EXECUTE FUNCTION read_address('Smith')
INTO p_fname, p_lname, p_add, p_city, p_state,
p_zip;

CALL read_address('Smith')
RETURNING p_fname, p_lname, p_add, p_city,
p_state, p_zip;

DECLARE
grade CHAR(1);
BEGIN

GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 47 -

grade := 'B';
CASE
WHEN grade = 'A' THEN DBMS_OUTPUT.PUT_LINE('Excellent');
WHEN grade = 'B' THEN DBMS_OUTPUT.PUT_LINE('Very Good');
WHEN grade = 'C' THEN DBMS_OUTPUT.PUT_LINE('Good');
WHEN grade = 'D' THEN DBMS_OUTPUT.PUT_LINE('Fair');
WHEN grade = 'F' THEN DBMS_OUTPUT.PUT_LINE('Poor');
ELSE
DBMS_OUTPUT.PUT_LINE('No such grade');
END CASE;
END;

--Result:
--Very Good