Postgres przeprowadza proste testy funkcji, którą próbujesz utworzyć i stwierdza (poprawnie), że tabela work_list
nie istnieje (jeszcze). Widzę dwie opcje:
1. „Udawaj, aż ci się uda”
Właściwie utwórz (tymczasową) tabelę przed utworzeniem funkcji. Tabela tymczasowa zniknie na koniec sesji, ale po utworzeniu funkcji zdałeś ten test na dobre.
Oczywiście, przed uruchomieniem funkcji w tym samym miejscu musisz usunąć tę tabelę. sesja, aby uniknąć konfliktu. Lepiej jednak:użyj UTWÓRZ TABELĘ TEMP, JEŚLI NIE ISTNIEJE
w Twojej funkcji (Postgres 9.1+). Możesz skrócić tabelę, jeśli już istnieje...
Jednak (patrz komentarze poniżej), cytując instrukcję
Pogrubiony nacisk na moje.
2. Zamiast tego użyj PL/pgSQL
Kontrole są mniej dokładne w plpgsql. Jeśli Postgres nadal narzeka (a nie w tym przypadku), możesz również wykonywanie SQL dynamicznie z EXECUTE
.
Na bok:w wielu przypadkach istnieje bardziej wydajne rozwiązanie bez tabeli tymczasowej za rogiem ...