[#1] Oracle/SQL - wyszukiwanie wartości
Szukałem w necie, pytałem "szpeców", ale wszystko co znajduje jest bardzo mgliste albo nie działa.

Mamy sobie bazę danych Oracle. Pierdyliard tabel, w każej gazylion kolumn. Szukam jakiejś wartości (np. słowo "Polska"), która jest w jednej (lub więcej) tabeli, a w jakiejś tam kolumnie (a może nawet w wielu kolumnach). W jaki sposób ją znaleźć z poziomu SQL? Wyszukiwanie jakiegoś stringu w pakietach, funkcjach czy procedurach jest banalne wykorzystując wbudowane mechanizmy Oracle - prostym selectem da się to zrobić i jest to całkiem wydajne czasowo. Ale jak to zrobić dla przeszukania wartości w tablicach, które są w kolumnach? Trzeba pisać własną funkcję czy ktoś ma jakiś gotowy, działający patent?

Ostatnia aktualizacja: 26.04.2019 20:34:32 przez mailman
[#2] Re: Oracle/SQL - wyszukiwanie wartości

@mailman, post #1

W Oracle masz tabelę ALL_TAB_COLUMNS, która przechowuje nazwy wszystkich tabel i kolumn w bazie danych.

Najlepiej (i najwygodniej) chyba będzie zrobić to jako funkcja w PL/SQL używając pętli i kursorów.

Deklarujesz kursor jako:
DECLARE CURSOR kursor1 IS SELECT TABLE_NAME FROM ALL_TAB_COLUMNS GROUP BY TABLE_NAME;

Następnie w pętli zewnętrznej idziesz po tabelach i pobierasz ich nazwy do zmiennej.
OPEN kursor1;
FETCH FROM kursor1 INTO current_table;

Deklarujesz drugi kursor.
DECLARE CURSOR kursor2 IS SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS 
WHERE TABLE_NAME=current_table GROUP BY COLUMN_NAME;

I pobierasz kolejne kolumny.
OPEN kursor2;
FETCH FROM kursor2 INTO current_column;

I teraz szukasz poszukiwanego tekstu:
SELECT current_column FROM current_table WHERE current_column LIKE 'Polska';

Mam nadzieję, że pomogłem.
[#3] Re: Oracle/SQL - wyszukiwanie wartości

@Hexmage960, post #2

Dzięki, ale nie bangla. Pętlę z kursorami mam, ale nie mam jak przekazać tego co zebrały do ostatniego selecta - tabela nie istnieje.

Ostatnia aktualizacja: 06.05.2019 20:04:44 przez mailman
[#4] Re: Oracle/SQL - wyszukiwanie wartości

@mailman, post #3

Temat nieaktualny. Poradziłem już sobie.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem