Ostatnio, z powodu zmiany w kodzie pewnego CMSa, musiałem dopisać do bazy danych (MySQL) kilkadziesiąt bardzo podobnych do siebie rekordów. Największym problemem było to, że każdy wiersz musiał dostać swój kolejny numer (powiększony o stałą). Ponieważ w MySQL nie ma odpowiednika Oracle'owego ROWNUM musiałem ten problem obejść.
Numer wiersza można obliczyć tworząc sobie zmienną.
MySQL:
-
SELECT @rownum := @rownum + 1 rownum, i.*
-
FROM (SELECT @rownum := 0) r, informacja i
Po skorzystaniu z dobrodziejstw INSERT ... SELECT moje ostateczne zapytanie dodające operacje do modułów CMSa, które tej operacji jeszcze nie mają, wyglądało tak.
MySQL:
-
INSERT INTO operacja(priorytet, id_modul, nazwa, kod)
-
SELECT @rownum := @rownum + 1 priorytet, m.id_modul, 'lista', 'lista'
-
FROM (
-
SELECT @rownum := (
-
SELECT max(id_operacja) FROM operacja
-
)
-
) r, ecms_modul m
-
WHERE id_modul NOT IN (
-
SELECT id_modul FROM operacja WHERE kod = 'lista'
-
);
DBDesigner 4 to aplikacja (dostępna na licencji GPL) umożliwiająca stworzenie modelu fizycznego bazy danych. Aplikacja pozwala na proste tworzenie tabel oraz relacji między nimi. Dodatkowo program sam, na podstawie relacji, tworzy odpowiednie klucze obce. Potrafi także połączyć się z wieloma bazami danych, na przykład MySQL lub Oracle i wyeksportować tam dane lub zsynchronizować model z istniejącą już bazą. Oczywiście można także wygenerować zwykły skrypt tworzący bazę.
Program jest prosty, ale do małych projektów wystarczający. I co najważniejsze, jest darmowy.

Dzięki temu, że została napisana w Kyliksie, działa zarówno pod Windowsem, jak i GNU/Linuksem. Niestety z tego samego powodu nie zawsze działa jak należy. Pod Ubuntu 7.04 i386 nie ma większych problemów. Wystarczy doinstalować dwa pakiety.
CODE:
-
sudo apt-get install libstdc++2.10-glibc2.2 libxft1
Niestety pod 64-bitowym Ubuntu jest więcej zabawy (ale do tego wszyscy posiadacze 64-bitowych Linuksów dawno się przyzwyczaili, prawda?). Jednak jest dosyć proste rozwiązanie. Wystarczy do katalogu DBDesigner4/Linuxlib dorzucić brakujące biblioteki. Same biblioteki możemy na przykład wyciągnąć z pakietów dla 32-bitowego Ubuntu. Aby oszczędzić Wam przyjemności szukania odpowiednich paczek i wypakowywania z nich plików, po prostu umieszczam tutaj DBDesignera z odpowiednimi bibliotekami.
Na koniec jeszcze dwie sprawy. Po pierwsze, po uruchomieniu prawdopodobnie trzeba będzie zmienić domyślną czcionkę (w menu Options/DBDesigner Options). Polecam Bitstream Vera Sans. Po drugie, ciągle mam problem z bibliotekami łączącymi się z bazą MySQL (u siebie mam wersję 5). Jeżeli ktoś zna rozwiązanie, proszę żeby umieścił je w komentarzu. 
W porównaniu do poprzedniego wpisu, cofnę się troszkę w edukacji.
Pokażę, jak od początku do końca zrobić bardzo prostą aplikację webową w Oracle'u. Zakładam oczywiście, że sam serwer jest odpowiednio skonfigurowany, a my posiadamy swój login i hasło do bazy oraz możliwość tworzenia aplikacji sieciowych.
Strona, którą stworzę będzie wyświetlała zawartość tabeli (i tylko tyle). Opiszę po kolei kolejne fazy tworzenia tej stronki. A wszystko to będzie wyglądać tak. Read the rest of this entry »
Do obsługi ciasteczek w Oracle'u służy pakiet OWA_COOKIE. Typy danych, funkcje i procedury zdefiniowane w tym pakiecie można znaleźć w dokumentacji Oracle'a.
Jak wiadomo, ciasteczka wysyłamy do przeglądarki w nagłówku HTTP. Na przykład w następujący sposób.
OWA_UTIL.MIME_HEADER('text/html',FALSE);
OWA_COOKIE.SEND(vNazwaCookie, vWartoscCookie);
OWA_UTIL.HTTP_HEADER_CLOSE;
Procedura MIME_HEADER z pakietu OWA_UTIL wysyła niestandardowy nagłówek HTTP. Wysyłamy do przeglądarki dokument text/html, ale nagłówka jeszcze nie zamykamy (decyduje o tym drugi parametr). Następnie wysyłamy ciasteczko o nazwie vNazwaCookie i wartości vWartoscCookie (obie zmienne są typu VARCHAR2).
Proste, prawda? Wyciąganie zawartości ciasteczka wcale nie jest trudniejsze. Żeby odczytać ciasteczko wystarczy użyć funkcji GET. Read the rest of this entry »