получить имя таблицы в функции - PullRequest
0 голосов
/ 21 апреля 2020

Мне нужно получить имя таблицы внутри функции:

SELECT f(name) FROM table;

как мне получить имя таблицы ( таблица ) в функции f?

1 Ответ

0 голосов
/ 21 апреля 2020

Вы не можете получить это неявно, потому что нет никаких связей между таблицей в предложении FROM и значениями, переданными в функцию.

Представьте себе запрос типа

SELECT f(a.col1 + b.col2)
FROM a CROSS JOIN b;

Не задействовано ни одной таблицы!

Если вам нужно передать таблицу в функцию, вы должны явно передать ее:

CREATE FUNCTION f(p_name text, p_table regclass) RETURNS ...
AS ...

Вы можете назвать это как

SELECT f(name, a.tableoid) FROM atable AS a;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...