1

Temat: pętla po zwróconych rekordach

witam
W wyzwalaczu sprawdzam które rekordy spełniają odpowiednie kryteria poleceniem które zwraca jakiś zestaw rekordów

SELECT 
  t_actual.idfk_diag
FROM 
  ustawienia.t_info_diag, 
  pojazdy.t_actual
WHERE 
  t_actual.idfk_diag = t_info_diag.idpk_info_diag AND
  t_info_diag.idfk_prio = 1;

potrzebuję teraz wykonać odpowiednie działania na wszystkich rekordach których wartości zostały zwrócone tylko jak to optymalnie zrobić?

Ostatnio edytowany przez WitekS (2010-06-16 20:25:55)

2

Odp: pętla po zwróconych rekordach

Cholerka nic nie kumam, co chcesz optymalizować tylko konkretnie.Co za trigger?

3

Odp: pętla po zwróconych rekordach

Wyzwalacz jest dość rozbudowany ale generalnie chodzi o to, że przy wpisaniu nowego rekordu albo po aktualizacji w tabeli np tabela3 sprawdzam które rekordy z tabeli np tabeli2 spełniają wymagane kryteria np.

SELECT 
  tabela2.kolumna1
FROM 
  schemat1.tabela1, 
  schemat2.tabela2
WHERE 
  tabela2.kolumna1 = tabela1.kolumna1 AND
  tabela1.kolumna2 = 1;

z tego zapytania mam zestaw (tablicę) pewnych wartości i na podstawie tych wartości muszę wykonać wpisy do innej tabeli i następnie usunąć rekordy dla których SELECT jak wyżej zwrócił mi wartości. Trudność (dla mnie) polega na tym że nie wiem jak wykorzystać zestaw zwróconych wyników. Gdyby w wyniku tego zapytania zwracana była jedna wartość to ok ale tu będzie tablica...
Optymalnie czyli możliwie wszystko za jednym razem w jednej pętli dla danego zwróconego zestawu wartości (rekordów) wykonać na podstawie wyników odpowiedni wpis do innej tabeli a następnie usunąć dany rekord i przejść do kolejnego i tak aż do końca zwróconego zestawu.

4

Odp: pętla po zwróconych rekordach

A nie możesz się przeiterować po tym selecie

for zmienna in 
SELECT 
  tabela2.kolumna1
FROM 
  schemat1.tabela1, 
  schemat2.tabela2
WHERE 
  tabela2.kolumna1 = tabela1.kolumna1 AND
  tabela1.kolumna2 = 1
loop
<wstaw wiersze>
<usun wiersze>
end loop;

A tak swoją drogą to ten trigger bedzie nieźle rzeźbił, na pewno tego potrzebujesz? smile

Ostatnio edytowany przez rski (2010-06-16 07:06:30)

5

Odp: pętla po zwróconych rekordach

W skrócie - muszę zakończyć rozpoczęte wpisy do których nie przyszły "normalnie"  informacje o końcu. Mam za to informację czy są aktualnie rozpoczęte wpisy z danej kategorii (są 4 kategorie) informacja ta przychodzi co np 10 min. Jeżeli przyjdzie informacja że nie powinno być wpisów danej kategorii a okaże się że są bo nie przyszła informacja o zakończeniu to muszę je zakończyć (wygenerować sztuczny wpis o zakończeniu, obliczyć czas trwania, wpisać do innej tabeli itp) i dopiero wtedy usunąć. Jest to wyjątkowa sytuacja którą muszę brać pod uwagę więc myślę że trigger sobie poradzi bez problemu.
Dla for-a mam z funkcji zliczone rekordy po których muszę iterować tylko nie wiem jak to zrobić dla danego zestawu rekordów czyli np jest tabela 10 wpisów sprawdziłem że mam w niej 3 rekordy które muszę zmienić i później usunąć jest to np 2,4 i 7 rekord. Jak to zrobić?

6

Odp: pętla po zwróconych rekordach

?! cholera nic nie kumam smile