PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Има ли такова нещо като временна функция?

Няма CREATE TEMP FUNCTION ... като съществуващия CREATE TEMP TABLE ... . Но има трик за създаване на функция във временната схема pg_temp , както предоставя свързаният отговор . Функцията е видима само в рамките на една и съща сесия и може да бъде извикана само с квалифицирано от схема име:

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

Мога да проследя идеята до тази публикация от Том Лейн на pgsql-общ .

Най-близкото нещо без трикове би било подготвено изявление . Действа много като временна SQL функция който умира в края на сесията. Не е същият нещо обаче и може да се използва само по себе си, а не в контекста на по-голяма заявка. Пример:

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

Обаждане:

EXECUTE upd_tbl(123, 'foo_name');

Подробности:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Бележки относно индексите на PostgreSQL B-Tree

  2. Паралелен unnest() и ред на сортиране в PostgreSQL

  3. Как да направя препратка към таблица с външни ключове два пъти?

  4. PostgreSql:Получаване на странно форматирано времево клеймо с часова зона

  5. Откриване на език с данни в PostgreSQL