GBase 8a
其他
问答

自定义函数调用方法

发表于2023-10-17 14:26:53439次浏览7个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】:8.5.16.0

【操作系统】:

【CPU】:

【问题描述】*:

目的:自定义函数通过传入的值将某表值返回,但是传入的值不是常量而是表数据该怎么调用呢

比如函数脚本是:函数名假如是F_TEST

select name from table where id=传入参数

使用场景是:select F_TEST(id) from t_grad,我要将函数里边的name展示

调用:

你们的文档调用是:set @grade = fnTestCondition('刘备','语文'); # 存储过程的调用需要用 call 关键 字;存储函数需要用变量接收其返回值 select @grade;

但是我的参数不是一个固定值,请回复该怎么调用呢,像oracle就可以直接调用

评论

登录后才可以发表评论
用户头像
GBase社区管理员发表于 2年前

您好,GBase支持直接按如下方式调用函数。文档里“用变量接收其返回值”只是一个调用实例。

此外,如果在自定义函数里使用了表,那么必须是复制表,否则可能会报表找不到的错误信息:DETAIL: Table 'testdb.t1' doesn't exist。因为,函数在执行时,是在gnode层执行的,而不是像存储过程一样从gcluster层进行调度执行的。

最佳回答
GBase用户12851发表于 2年前
@社区管理员:好的,谢谢,如果我们这里是随机分布表就不能用这种函数了嘛?
用户头像
GBase社区管理员发表于 2年前
@GBase用户12851

是的,如果是随机分布表,可能会导致函数每次执行的结果都不一样。因为数据在各个GNode节点上是随机分布的。

用户头像
levvel发表于 6个月前
读书破万卷,下笔如有神
用户头像
levvel发表于 6个月前
写得真好!
GBase用户51848发表于 2个月前
蹲个答案。
用户头像
A杰发表于 1个月前
问题不错,学习了。