Witam.
Czy istnieje w sql jakieś rozwiązanie w którym mógłbym dostać się do danych rekordów w pętli jak to ma miejsce w różnych językach programowania, np:
for(int i = 0; i < XX; i++)
if i < XX nazwa += kolumna[i] + ";"
if i = XX nazwa += kolumna[i] + ".";
Przykład co chciałem uzyskać w procedurze:
BEGIN
i:= 0;
FOR kolumny in SELECT distinct TABLE_NAME FROM tabela_metadanych
LOOP
sql:='select COLUMN_NAME c FROM tabela_metadanych where table_name like '||kolumny.TABLE_NAME;
for wynik in execute sql loop
rekordy:=wynik.c;
end loop;
sql:='select count(COLUMN_NAME) d FROM tabela_metadanych where table_name like '||kolumny.TABLE_NAME;
for wynik in execute sql loop
help:=wynik.d;
end loop;
if i < help then
rek := rek||rekordy[i]||',';
i:=i+1;
elsif i = help then
rek := rek||rekordy[i];
end if;
sql := 'select count(*) a from (select '||rek||' from '||kolumny.table_name||' tb
where jakiswarunek
minus
select '||rek||' FROM '||kolumny.table_name||' tb2) roznice';
for wynik in execute sql loop
cnt:=wynik.a;
end loop;
INSERT INTO jakastabela VALUES (kolumny.TABLE_NAME,cnt);
COMMIT;
i:= 0;
END LOOP;
Przy takim czymś oczywiście wyskakuj błąd:
transformArraySubscripts: type VARCHAR is not an array
dodanie znacznika <code class="cpp">
- @furious programming