Przekazanie do funkcji w sql tablicy intów ze skryptu w php

0

Hej,

Pytanie w zasadzie takie jak w topicu - jak przekazać ze skryptu w php najprościej tablicę intów (różny rozmiar). Chodzi mi o coś w stylu:

SELECT nazwa_funkcji(arg1, arg2, tablica[] );

Np. skrypt php

admin->query("SELECT nazwa_funkcji(?, ?, ?)", array(arg1, arg2, tablica));

coś w ten deseń.

A druga część pytania w funkcji mogę przelecieć po całej tablicy pętlą FOR odwołując się do nazwy parametru funkcji?
Wiem, że można to zrobić na JSONie i przekazać do sqla z php ale ciekawi mnie jak to zrobić za pomocą tablic.

0

Ok, już doszedłem do tego. Wyjaśniam poniżej, może komuś się przyda :P w zapytaniu można dać jako parametr funkcji tablicę, np.

SELECT nazwa_funkcji(text, text, text, ARRAY[2, 3, 5]);

trzeba tylko w phpie przetworzyć string (zapytanie) i posklejać argumenty, żeby ostatecznie otrzymać powyższą postać.
W funkcji w celu iteracji elementów takiej tablicy trzeba użyć FOREACH :

FOREACH zmienna IN ARRAY nazwa_tablicy
LOOP

... przetworzenie każdego z elementów

END LOOP;

i w zasadzie tyle.. Trzeba też pamiętać, że w SQLu tablice indeksowane są od 1 (przynajmniej w postgresie) i jak wpisywałem nazwa_tablicy[0] nic nie zwracało. Pozdrawiam

1

CREATE FUNCTION jakas(par1 int, par2 int, VARIADIC tablica int[])

Słowo-klucz VARIADIC. MUSI byc ostatnim parametrem. A działa jak normalna tablica. np. id=ANY(tablica)

0

Dzięki Marcinie, Twojego rozwiązania też spróbuję :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1