PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Appeler une fonction avec un type composite comme argument à partir d'une requête native dans jpa

Passer un tableau littéral au lieu d'un constructeur de tableau. La valeur peut être transmise en tant que littéral de chaîne , puis il est contraint au bon type par Postgres :

SELECT some_updates('{"(488, 2019-07-01 00:00:00,342)"}');

Condition préalable :la fonction n'est pas "surchargée" afin que la résolution du type de fonction soit sans ambiguïté avec une entrée non typée.

Connexe :

Si vous avez moins de 100 éléments de tableau, un VARIADIC aiderait à simplifier le passage d'arguments :

CREATE FUNCTION some_updates(VARIADIC t test[]) ...

Passez ensuite des littéraux de ligne tels que :

SELECT some_updates('(488, 2019-07-01 00:00:00,342)'
                  , '(489, 2019-07-02 00:00:00,343)')

Voir :

Si vous avez (beaucoup) plus de lignes à transmettre, envisagez de les écrire dans une table (temporaire) avec un simple INSERT et de les traiter à partir de là.