我只是想知道如何用PostgreSQL (截至12.x)为heterogeneous VARIADIC函数(如jsonb_build_object )编写包装函数?
我可以找到的大多数VARIADIC函数的SQL示例都不是异构的。VARIADIC部分本质上是同一类型的元素数组。但是我需要为jsonb_build_object编写一个包装器来进行一些后处理。在这里,变量部分(键值列表)中的参数类型并不相同.
目前,我写到:
my_func(jsonb_build_object(k1, v1, k2, v2, ...))但是这个样板越来越无聊了..。
发布于 2020-04-13 19:39:07
jsonb_build_object()以VARIADIC "any"作为输入。伪类型"any"是任何输入类型的占位符.目前,这只适用于C函数。手册:
在C中编码的函数(无论是内建的还是动态加载的)都可以声明为接受或返回这些伪数据类型。当伪类型用作参数类型时,应由函数创建者来确保函数的行为安全。用过程语言编码的函数只能在它们的实现语言允许的情况下使用伪类型。目前,大多数过程语言都禁止使用伪类型作为参数类型,并且只允许将
void和record作为结果类型(当函数用作触发器或事件触发器时,再加上trigger或event_trigger)。一些还支持使用anyelement、anyarray、anynonarray、anyenum和anyrange类型的多态函数。
对于使用另一种过程语言的实现,没有一对一的翻译。可能会有解决办法,取决于你的确切目标。
https://dba.stackexchange.com/questions/264327
复制相似问题