Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pl/pgsql problem
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
fidel69
Witam,


Szukalem odpowiedzi na moje pytanie w sieci, ale przedewszystkim w literaturze i nie odnalazlem, wiec zwracam sie do bardziej doswiadczonych, otoz problem polega na tym ze w funkcji w pl/pgsql chce stworzyc nazwe tabeli ktora pozniej chce wykorszystac w kolejnym zapytaniu, w moim przypadku wynosi:

zam_1_chirurgia ktore tworze nastepujaco:

  1. nazwa_tab=''zam_'' || licznik_1 || ''_'' || nazwa_oddzialu.nazwa ;


nazwa typ: text
licznik_1 typ integer
nazwa_oddzialu.nazwa to oczywiscie record

i nastepnie che uzyc tej nazwy w zapytaniu do tej odpowiedniej tabeli:

  1. SELECT INTO suma_lek * FROM nazwa_tab WHERE bloz_id=nr.bloz_id;


z tego co widze cos takiego jest niedozwolone ?, czy ja popelniam blad w skladni ?..a moze jest inne rozwiazanie ?


to blad po wywolaniu funkcji:

  1. ERROR: syntax error at OR near "$1" at character 17
  2. QUERY: SELECT * FROM $1 WHERE bloz_id= $2
  3. CONTEXT: PL/pgSQL FUNCTION "oblicz_zapas" line 23 at SELECT INTO VARIABLES



Dziekuje za wszelkie sugestie...
prond
Żeby wziąć nazwę tabeli ze zmiennej musisz wykorzystać w PL/pgSQL funkcję EXECUTE.
Np.:
  1. FOR my_row IN EXECUTE 'SELECT * FROM '||table_name||';'; RETURN NEXT my_row;
  2. END LOOP;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.