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

时间:2017-07-18 00:39:49

标签: postgresql function plpgsql

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

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

我的问题是

  1. 从编程的角度来看,这被认为是PG“世界”中的不良做法(影响表现或其他方面)或不良做法
  2. 如果#1是坏方法,创建自定义复合类型并将其用作函数的参数会更好吗?

1 个答案:

答案 0 :(得分:1)

我没有看到jsonb函数参数的大问题,除了个别参数可能使输入值更明显。但是,没有任何东西不能通过文档修复。

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

我说你应该采用最适合你的方法和手头的问题 - 从PostgreSQL的角度来看无关紧要。