sql >> Databáze >  >> RDS >> PostgreSQL

Jak předat pole vlastního typu funkci Postgres

Můžete použít alternativní syntaxi s literálem pole místo konstruktoru pole, což je konstrukce podobná funkci Postgres a může způsobit potíže, když potřebujete předat hodnoty - jako v připraveném výpisu:

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

Přidal jsem zalomení řádku mezi dva typy řádků v poli pro zobrazení. To je legální.

Jak najít správnou syntaxi pro any doslovně?

Stačí se zeptat Postgres. Zde je ukázka:

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);

Vrátí:

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

db<>zde hrajte

Jakákoli tabulka (včetně dočasných tabulek) implicitně vytváří typ řádku se stejným názvem.



  1. Jak získat aktuální čas (bez časového pásma) v PostgreSQL

  2. Příklady CURRENT_DATE – MySQL

  3. Jak nahradit primární klíč Django jiným celým číslem, které je pro danou tabulku jedinečné

  4. Jak vypsat tabulky ovlivněné kaskádovým mazáním