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用户12851发表于 2年前
@社区管理员:好的,谢谢,如果我们这里是随机分布表就不能用这种函数了嘛?

GBase社区管理员发表于 2年前
@GBase用户12851:
是的,如果是随机分布表,可能会导致函数每次执行的结果都不一样。因为数据在各个GNode节点上是随机分布的。
levvel发表于 6个月前
读书破万卷,下笔如有神
levvel发表于 6个月前
写得真好!
GBase用户51848发表于 2个月前
蹲个答案。
A杰发表于 1个月前
问题不错,学习了。
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526
您好,GBase支持直接按如下方式调用函数。文档里“用变量接收其返回值”只是一个调用实例。
此外,如果在自定义函数里使用了表,那么必须是复制表,否则可能会报表找不到的错误信息:DETAIL: Table 'testdb.t1' doesn't exist。因为,函数在执行时,是在gnode层执行的,而不是像存储过程一样从gcluster层进行调度执行的。