Witam. Starszy stażem kolega twierdzi, że trzeba pisać funkcje tak żeby działały na wypadek gdy zmieni się liczba kolumn w tabeli. Tak więc select i insert mają wyglądać mniej więcej tak:
do $$
declare
nazwy_kolumn text;
res integer;
begin
nazwy_kolumn = 'ciag_nazw_kolumn'; -- oczywiscie nie jest to wpisane na sztywno, tylko pobrane poprzez jakies funkcje
EXECUTE $Q$
WITH
ag as (select * from $1),
eg as (insert into jakas_tabela ($1) values ('ciag_wartosci_dla_kolumn_po_przecinku')) -- wartosc rzecz jasna rowniez pobrana poprzez zapytanie
SELECT count(*) FROM ag
$Q$
INTO Res
USING nazwy_kolumn;
end; $$
Po odpaleniu tego pojawi mi się błąd:
BŁĄD: błąd składni w lub blisko "$1"
SQL state: 42601
Na początku myślałem, że może sam sposób pisania wyrażenia jest poprawny tylko gdzieś jest rzeczywiście błąd składni, ale próbowałem już uprościć takie zapytanie, tak żeby przekazywać tylko jedną wartość dla jednej kolumny i dostawałem ten sam błąd. Mniemam więc, że pewnie samo przekazanie parametrów nie może się odbyć w ten sposób. Ktoś wie może jak to naprawić?