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

Tabulka jako argument funkce PostgreSQL

Jako parametr nelze předat tabulku jako takovou, pouze název tabulky:

CREATE FUNCTION test.fcttest(tbl text) RETURNS SETOF test.out_table AS $$
BEGIN
  EXECUTE format('INSERT INTO test.out_table '
                   'SELECT id, another_field FROM %I', tbl);
  RETURN QUERY EXECUTE format('SELECT id, another_field FROM %I', tbl);
END;
$$ LANGUAGE plpgsql;

Při předávání názvu tabulky musíte provést dynamický příkaz. Můžete to udělat pouze ve funkci plpgsql. Použití format() funkce s %I modifikátor chrání před SQL injection. Řádky jsou vráceny pomocí RETURN NEXT QUERY fráze, opět s dynamickým příkazem.

Všimněte si, že tato logika obě vloží sadu záznamů do tabulky test.out_table a poté vrátí stejnou sadu záznamů. Nejste si jisti, zda je to to, co opravdu chcete.




  1. Štípací struny:Následné

  2. PostgreSQL - CHYBA:Datum sloupce nelze přetypovat na typ datum

  3. Ukončení nečinných připojení mysql

  4. změnit sloupec přejmenování tabulky v databázi Oracle