Przykłady

Metody odwołujące się do bazy danych posiadają wersję, gdzie pierwszym argumentem jest konektor, jeżeli jednak wywołamy przeciążoną metodę bez konektora, zostanie wybrany domyślny, zdefiniowany w konfiguracji serwera.

W celu odczytania danych z bazy stosujemy funkcje z rodziny read. Podstawowe wywołanie wygląda następująco

 

$=(@ListaTablic, $sql.read("select id, name from p_mime_types where name=?", ["image/gif"] as Object[]))

$for(@tablica, $ListaTablic, {
ID: $@talica[0]
Name: $@tablica[1]
})

Gdzie znaki zapytania w kodzie sql są zastępowane elementami z tablicy w ostatnim argumencie. Metoda read zwraca obiekt typu List<Object[]>, gdzie kolejne elementy listy stanowią rekordy, natomiast tablice zawierają atrybuty. Jeżeli chcemy uzyskać wyniki zapytania w postaci mapy, musimy skorzystać z metody readAsMaps.

Do wykonania poleceń typu edycji bazy danych i jej rekordów służą metody z rodziny write.

 

$sql.write("insert into p_mime_types name values (?)", ["audio/x-ms-wma"] as Object[])

Argumenty polecenia sql możemy również podawać wewnątrz samego polecenia, pomijając ostatni argument metody write.

 

Metody z execute służą do wywoływania poleceń PL/SQL. Jako jeden z argumentów można podać typy danych wyjściowych. Jeżeli chcemy wywołać funkcję PL/SQL powinniśmy skorzystać z metod executeFunction, bądź executeProcedure jeżeli ma to być procedura PL/SQL.

 

Moduł Sql daje również możliwość sterowania transakcjami. Wszystkie instrukcje wypisane w PalioCode wewnątrz metody transaction zostaną wykonane w specjalnym izolowanym połączeniu z bazą danych. Wszystkie zmodyfikowane dane zostaną zatwierdzone po wykonaniu wszystkich instrukcji.


$sql.transaction(["users", "customers"], {
  $sql.write("users", "...")
  $if((Boolean)$sql.exists("customers", "..."), {
    $sql.write("customers", "...")
  }, {
    $sql.write("customers", "...")
  })
})

 

 

$sql.transaction(["users", "customers"], {
$sql.write("users", "...")
$if((Boolean)$sql.exists("customers", "..."), {
$sql.write("customers", "...")
}, {
$sql.write("customers", "...")
})
})