PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Chiama una funzione con tipo composito come argomento dalla query nativa in jpa

Passa un array letterale invece di un costruttore di array. Il valore può essere passato come stringa letterale , quindi viene forzato al tipo corretto da Postgres:

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

Prerequisito:la funzione non è "sovraccaricata" in modo che la risoluzione del tipo di funzione non sia ambigua con input non tipizzati.

Correlati:

Se hai meno di 100 elementi dell'array, un VARIADIC la funzione aiuterebbe a semplificare il passaggio di argomenti:

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

Quindi passa i valori letterali di riga come:

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

Vedi:

Se hai (molte) più righe da passare, considera di scriverle in una tabella (temporanea) con un semplice INSERT ed elaborarli da lì.