PostgreSQL - 使用 JSONB 作为单个函数参数的任何缺点

PostgreSQL - Any downside to using JSONB as a single function argument

所以我有一个 PG 函数 create_order(语言是 PL/PGSQL),它接受相当多的参数。 我注意到每次我修改参数名称、它的类型,或者如果我添加一个新参数,我都必须删除该函数(CREATE OR REPLACE 不起作用)

所以我一直在想,如果我只接受一个 jsonb 类型的参数并将其称为 day...那么签名看起来像 create_order(args jsonb)

我的问题是

  1. 这是 PG 中的不良做法 "world"(影响性能或其他方面)还是从编程角度来看的不良做法
  2. 如果 #1 是不好的方法,创建自定义复合类型并将其用作函数的参数会更好吗?

我认为 jsonb 函数参数没有什么大问题,除了个别参数可能使输入值更明显。但这不是文档无法解决的问题。

另一方面,我也发现签名更改时删除和重新创建函数没有问题。它可以作为调用站点需要更新的提醒。

我会说你应该选择最适合你和手头问题的方法——从 PostgreSQL 的角度来看这并不重要。