Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcja pl/sql
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
3rdeye
oto treść funkcji (właściwie nieważne co ona robi) chodzi mi oto jak z konstrukcji FOR row IN SELECT przypisać jaką wartość z "row"

  1. CREATE OR REPLACE FUNCTION setNewTermWeekly(INT8,DATE,DATE) RETURNS INT8 AS '
  2. DECLARE
  3. in_id_doc ALIAS FOR $1;
  4. in_from ALIAS FOR $2;
  5. in_to ALIAS FOR $3;
  6. visit_time INT8;
  7. tmpint INT2;
  8. count INT8;
  9. my_row RECORD;
  10.  
  11. BEGIN SELECT visit_time INTO visit_time FROM doctors WHERE id = cast(in_id_doc as INT8);
  12. IF NOT FOUND THEN return 1; END IF;
  13.  
  14. tmpint := 1;
  15.  
  16. LOOP
  17. IF tmpint > 7 THEN
  18. EXIT;
  19. END IF;
  20.  
  21. FOR my_row IN SELECT id_type, cast(hour_from as int8) as hour_from, cast(hour_to as int8) FROM visits_hours WHERE id_doctor = cast(in_id_doc as INT8) AND day_num = tmpint ORDER BY hour_from LOOP --tutaj jest problem
  22. count := quote_ident(my_row.hour_from);
  23. --tutaj sie konczy
  24. LOOP
  25. INSERT INTO visits (id_doctor,day,hour) VALUES (in_id_doc,in_from+tmpint,count));
  26. count := count + visit_time;
  27. IF count >= my_row.hour_to THEN
  28. EXIT;
  29. END IF;
  30. END LOOP;
  31. END LOOP;
  32.  
  33. tmpint := tmpint + 1;
  34. END LOOP;
  35.  
  36. END;
  37. ' LANGUAGE 'plpgsql';


  1. SELECT setNewTermWeekly(cast(1 AS int8),cast(now() AS date),cast(now() AS date))


wywala taki błąd:


ERROR: mismatched parentheses
CONTEXT: compile of PL/pgSQL function "setnewtermweekly" near line 26
bendi
Hmm a co to jest?
  1. --tutaj sie konczy
  2. LOOP
  3. [b] INSERT INTO visits (id_doctor,day,hour) VALUES (in_id_doc,in_from+tmpint,count));[/b]
  4. count := count + visit_time;
  5. IF count >= my_row.hour_to THEN
  6. EXIT;
  7. END IF;
  8. END LOOP;
  9. END LOOP;
  10.  
  11. tmpint := tmpint + 1;
  12. END LOOP;
  13.  
  14. END;
  15. ' LANGUAGE 'plpgsql';


[/quote]
SongoQ
Odnosnie skladni petli for plsql jest ok. Masz skopana funkcje w tym zapytaniu.
3rdeye
tak już wszystko wiem. dzięki za pomoc ...

wystarczył słownik do angielskiego winksmiley.jpg

było za dużo nawiasów.
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.