sql >> Database >  >> RDS >> PostgreSQL

Bestaat er zoiets als een tijdelijke functie?

Er is geen CREATE TEMP FUNCTION ... zoals de bestaande CREATE TEMP TABLE ... . Maar er is de truc om een ​​functie te creëren in het tijdelijke schema pg_temp , zoals het gekoppelde antwoord . De functie is alleen zichtbaar binnen dezelfde sessie en kan alleen worden aangeroepen met een schema-gekwalificeerde naam:

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

Ik zou het idee kunnen herleiden tot dit bericht van Tom Lane op pgsql-algemeen .

Het beste zonder trucjes zou een voorbereide verklaring zijn . Werkt ongeveer als een tijdelijke SQL-functie die sterft aan het einde van de sessie. Niet hetzelfde ding, en kan alleen op zichzelf worden gebruikt, niet in de context van een grotere zoekopdracht. Voorbeeld:

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

Bel:

EXECUTE upd_tbl(123, 'foo_name');

Details:




  1. Is een MySQL-procedurethread veilig?

  2. Hoe kan ik gemeenschappelijke gegevens invoegen in een tijdelijke tabel van ongelijksoortige schema's?

  3. Witruimtetekens verwijderen uit een tekenreeks in SQL Server

  4. python 5x langzamer dan perl mySql-query