
Projekt języka : Instrukcje : query | Poprzednia strona: afterword Nastepna strona: Wyrażenia i operatory |
Instrukcja ta służy do wyciągania danych z bazy danych i wklejania ich na stronę HTML. Wyciąganie danych polega na wykonaniu zapytania SQL i załadowaniu wyniku. Wynik wklejany jest na stronę rekord po rekordzie. Dla każdego rekordu wykonywane są instrukcje wewnątrz bloku do-endq, przed wykonaniem instrukcji tworzone są zmienne lokalne które umożliwiają dostęp do poszczególny
ch pól rekordu. Umożliwia to wklejanie wyniku zapytania na stronę. Składnia instrukcji jest następująca:query type,name,user,password,querytext do
[instrukcje]
endq
|
Nazwa parametru |
Opis |
|
type |
Typ bazy danych, OHTML obsługuje dwie najpopularniejsze bazy danych dostępne po systemem Linux, są to MySQL ( mysql) i Postgres (postgres). |
|
name |
Nazwa bazy danych |
|
user |
Nazwa użytkownika bazy danych |
|
password |
Hasło użytkownika |
|
querytext |
Zapytanie SQL obsługiwane przez wybraną bazę |
Definiowane zmienne do użycia wewnątrz instrukcji query.
|
Nazwa zmiennej |
Opis |
|
column_names |
Zawiera nazwy wszystkich kolumn. |
|
column_i |
i = 1 .. n, zawiera nazwę i-tej kolumny. |
|
num_rows |
Liczba wszystkich rekordów w wyniku zapytania. |
|
record_index |
Numer aktualnego rekordu, numeracja zaczyna się od jedynki. |
|
num_fields |
Liczba kolumn w rekordzie. |
|
i |
i = 1 .. n, wartość i-tej kolumny. |
|
iden |
Dodatkowo do zmiennych lokalnych dodawane są zmienne o nazwach kolumn z wyniku zapytania. Ich wartość jest taka sama jak zmiennych o nazwach 1 .. n ale są one wygodniejsze w użyciu. |
Przykłady:
/* Deklaracja zmiennych pomocniczych */ decl i, q, c /* Zdefiniowanie tekstu zapytania SQL */ set q "select * from DEPT" /* Wykonanie zapytania na bazie danych "tempdb". Blok instrukcji do-endq jest skonstruowany na tyle ogólne, że potrafi wyświetlić wyniki dowolnego zapytania. Wynik nie jest formatowany znacznikami HTML w celu zwiększenia czytelności przykładu. */ query mysql,tempdb,root,"",$q do /* Wydrukowanie nazw kolumn. Oczywiście nazwy należy wydrukować tylko przed pierwszym rekordem. */ if $record_index n== 1 then for i in $column_names do $i; " " endf nl endif /* Wydrukowanie wartości kolumn z pojedynczego rekordu wyniku zapytania. */ for i in $column_names do /* Instrukcja $i zwróci nazwę kolumny, ponowne zastosowanie znaku dolara spowoduje pobranie wartości ze zmiennej o nazwie kolumny. */ $$i; " " endf nl endq /* Nowe zapytanie SQL */ set q "select * from USERS" /* Poniższy przykład ilustruje wykorzystanie pozostałych zmiennych instrukcji query */ query postgres,db1,root,"",$q do /* wydrukowanie nazw kolumn */ if $record_index n== 1 then set i 1 while $i n<= $num_fields do set c column_,$i $$c ; " " incr i 1 endw nl endif /* Wydrukowanie wartości kolumn z aktualnego rekordu */ set i 1 while $i n<= $num_fields do $$i ; " " incr i 1 endw nl /* Po ostatnim rekordzie też można coś wydrukować. */ if $record_index n== $num_rows then "To był ostatni rekord" ; nl endif endq