sql >> Database >  >> RDS >> PostgreSQL

Hoe een aangepast type array door te geven aan de Postgres-functie

U kunt de alternatieve syntaxis gebruiken met een array letterlijke in plaats van de array-constructor, die een Postgres-functie-achtige constructie is en problemen kan veroorzaken wanneer u waarden moet doorgeven - zoals in een voorbereide verklaring:

SELECT myschema.myfunc('0d6311cc-0d74-4a32-8cf9-87835651e1ee'
                  , '{"(0d6311cc-0d74-4a32-8cf9-87835651e1ee, 25)"
                    , "(6449fb3b-844e-440e-8973-31eb6bbefc81, 10)"}'::mytype[]);

Ik heb een regeleinde toegevoegd tussen de twee rijtypen in de array voor weergave. Dat is legaal.

De juiste syntaxis vinden voor elke letterlijk?

Vraag het maar aan Postgres. Hier is een demo:

CREATE TABLE mytype (id uuid, amount numeric(13,4));

INSERT INTO mytype VALUES
  ('0d6311cc-0d74-4a32-8cf9-87835651e1ee', 25)
 ,('6449fb3b-844e-440e-8973-31eb6bbefc81', 10);

SELECT ARRAY(SELECT m FROM mytype m);

Retourneren:

{"(0d6311cc-0d74-4a32-8cf9-87835651e1ee,25.0000)","(6449fb3b-844e-440e-8973-31eb6bbefc81,10.0000)"}

db<>viool hier

Elke tabel (inclusief tijdelijke tabellen) creëert impliciet een rijtype met dezelfde naam.



  1. Java Oracle-uitzondering - maximum aantal expressies in een lijst is 1000

  2. Database reorgs – Waarom ze belangrijk zijn

  3. Systeemkolommen in PostgreSQL begrijpen

  4. Oracle-partitie op trefwoord