У меня есть функция, которая создает несколько временных таблиц и JOINS
для этих временных таблиц. Когда я CREATE
функция I, я могу включить эту строку вверху запроса:
SET check_function_bodies = false;
Это предотвращает ошибку «связь существует» из будучи поднятым. Пока все хорошо, но возможно ли включить одну и ту же строку SET
при вызове функции или она должна быть включена в само определение функции?
Вот мое фактическое определение функции:
CREATE OR REPLACE FUNCTION reporting."rsp_TermPositionRawData_WIP"( /* parameters */ ) RETURNS void LANGUAGE 'sql'
COST 100 VOLATILE SET check_function_bodies=false
AS $BODY$
BEGIN
DROP TABLE IF EXISTS FilteredRequests;
DROP TABLE IF EXISTS FilteredResponses;
DROP TABLE IF EXISTS Ranks;
CREATE TEMP TABLE FilteredRequests AS
SELECT /* large query */;
CREATE TEMP TABLE FilteredResponses AS
SELECT /* large query that references "filteredrequests" */
CREATE TEMP TABLE Ranks AS
SELECT /* large query that references "filteredresponses" */
$BODY$;
Сообщение об ошибке
ERROR: relation "filteredrequests" does not exist LINE 116: INNER JOIN FilteredRequests FRQ ON FRQ.QuoteID