返回首页

gbase数据、南大通用产品文档:GBase8sCALL 语句

更新日期:2024年09月11日

您可使用 CALL 语句,从 SPL 例程调用 SPL 例程或外部例程。CALL 可执行过程,也
可执行函数。如果您使用 CALL 来执行函数,则请添加 RETURNING 子句和将要接收该
函数返回的值的 SPL 变量的名称。
例如,假设您想要 scale_rectangles 函数调用计算矩形面积的外部函数,然后返回带有矩形
描述的面积,如下图所示。
图: 调用外部函数。
CREATE FUNCTION scale_rectangles( rectid INTEGER,
scale REAL )

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

RETURNING rectangle_t, REAL;

DEFINE rectv rectangle_t;
DEFINE a REAL;
SELECT rect INTO rectv
FROM rectangles WHERE id = rectid;
IF ( rectv IS NULL ) THEN
LET rectv.start = (0.0,0.0);
LET rectv.length = 1.0;
LET rectv.width = 1.0;
LET a = 1.0;
RETURN rectv, a;
ELSE
LET rectv.length = scale * rectv.length;
LET rectv.width = scale * rectv.width;
CALL area(rectv.length, rectv.width) RETURNING a;
RETURN rectv, a;
END IF;

END FUNCTION;
该 SPL 函数使用执行外部函数 area() 的 CALL 语句。返回的值 area() 保存在 a 中,并通
过 RETURN 语句返回到调用例程。
在此示例中,area() 是外部函数,但您可以同样的方式将 CALL 用于 SPL 函数。

说明
自定义脱敏是对字符列进行脱敏,用户可以设定三个参数,prefix 开始保留字符数
量,suffix 结尾保留字符数量以及padding 遮挡字符,如果实际内容长度小于等于
prefix+suffix+length(padding)长度,则直接显示padding 的字符内容。
示例

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
456
设定prefix 为3,suffix 为6,padding 字符“XXXX”。
gbase>
CREATE
TABLE
t_m_partial(context
VARCHAR(255)
MASKED
WITH(FUNCTION = 'PARTIAL(3,"XXXX",6)'));
Query OK, 0 rows affected (Elapsed: 00:00:00.24)
gbase> INSERT INTO t_m_partial VALUES('This is a book on the desk.'),('Hello');
Query OK, 2 rows affected (Elapsed: 00:00:00.08)
Records: 2
Duplicates: 0
Warnings: 0
gbase> SELECT * FROM t_m_partial;
+---------------+
| context
|
+---------------+
| ThiXXXX desk. |
| XXXX
|
+---------------+
2 rows in set (Elapsed: 00:00:00.02)
表4- 77 脱敏前数据
内容(varchar(255))
This is a book on the desk.
Hello
表4- 78 应用自定义脱敏后结果
内容(varchar(255))
ThiXXXX desk.
XXXX
注意
NULL 值不做脱敏处理,显示为NULL。

No class files to be put into the jar
应用程序调用 createJar() 方法并为此 classnames 参数传递了一个零长度的字符串。该方法
签名如下所示:
createJar(UDTMetaData mdata, String[]
classnames)