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

Existuje něco jako funkce temp?

Neexistuje žádná CREATE TEMP FUNCTION ... jako stávající CREATE TEMP TABLE ... . Existuje však trik, jak vytvořit funkci v dočasném schématu pg_temp , stejně jako odpovědi s odkazem . Funkce je viditelná pouze v rámci stejné relace a lze ji volat pouze jménem kvalifikovaným pro schéma:

CREATE FUNCTION pg_temp.f_inc(int)
  RETURNS int AS 'SELECT $1 + 1' LANGUAGE sql IMMUTABLE;

SELECT pg_temp.f_inc(42);
f_inc
-----
43

Nápad jsem mohl vysledovat k tomuto příspěvku Toma Lanea na pgsql-general .

Nejbližší věc bez triků by byla připravená výpověď . Funguje podobně jako dočasná funkce SQL který na konci sezení zemře. Není stejný a lze je použít pouze samostatně, nikoli v kontextu většího dotazu. Příklad:

PREPARE upd_tbl AS
UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;

Volejte:

EXECUTE upd_tbl(123, 'foo_name');

Podrobnosti:




  1. Získejte počet řádků z příkazu COPY

  2. Velký počet sloupců v databázi MySQL

  3. Poskytovatel nevrátil chybu řetězce ProviderManifestToken

  4. Jak popsat problém s výkonem v relační databázi?