首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为像jsonb_build_object()这样的异构VARIADIC函数编写包装器?

如何为像jsonb_build_object()这样的异构VARIADIC函数编写包装器?
EN

Database Administration用户
提问于 2020-04-04 19:08:44
回答 1查看 128关注 0票数 1

我只是想知道如何用PostgreSQL (截至12.x)为heterogeneous VARIADIC函数(如jsonb_build_object )编写包装函数?

我可以找到的大多数VARIADIC函数的SQL示例都不是异构的。VARIADIC部分本质上是同一类型的元素数组。但是我需要为jsonb_build_object编写一个包装器来进行一些后处理。在这里,变量部分(键值列表)中的参数类型并不相同.

目前,我写到:

代码语言:javascript
复制
my_func(jsonb_build_object(k1, v1, k2, v2, ...))

但是这个样板越来越无聊了..。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2020-04-13 19:39:07

jsonb_build_object()VARIADIC "any"作为输入。伪类型"any"是任何输入类型的占位符.目前,这只适用于C函数。手册:

在C中编码的函数(无论是内建的还是动态加载的)都可以声明为接受或返回这些伪数据类型。当伪类型用作参数类型时,应由函数创建者来确保函数的行为安全。用过程语言编码的函数只能在它们的实现语言允许的情况下使用伪类型。目前,大多数过程语言都禁止使用伪类型作为参数类型,并且只允许将voidrecord作为结果类型(当函数用作触发器或事件触发器时,再加上triggerevent_trigger )。一些还支持使用anyelementanyarrayanynonarrayanyenumanyrange类型的多态函数。

对于使用另一种过程语言的实现,没有一对一的翻译。可能会有解决办法,取决于你的确切目标。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/264327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档