PL/SQL – Wiki

PL/SQL

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji , szukaj

PL/SQL oznacza proceduralny SQL, czyli rozszerzenie języka SQL umożliwiające tworzenie konstrukcji takich jak pętle , instrukcje warunkowe oraz zmienne . Jest używany w Oracle Forms i w bazie do tworzenia wyzwalaczy , procedur i funkcji .

PL/SQL składniowo nawiązuje do Ady , jest jednym z trzech języków wbudowanych w bazę danych Oracle, pozostałe dwa to SQL i Java .

PL/SQL stanowi wbudowany język proceduralny baz danych Oracle . Inne bazy danych zwykle mają odpowiedniki języka proceduralnego, np.: PL/pgSQL w PostgreSQL .


Spis treści

[ edytuj ] Podstawowa struktura kodu

Kod PL/SQL składa się z bloków , które ogólnie rzecz biorąc mają formę:

  DECLARE
     -- blok deklaracji (opcjonalnie)
  BEGIN
     -- blok programu
  EXCEPTION
     -- obsługa wyjątków (opcjonalnie)
  END
  /* Przykładowy komentarz
      w wielu liniach... */

W sekcji DECLARE określa się typy zmiennych, stałych, kolekcji, i typów zdefiniowanych przez użytkownika.

Pomiędzy BEGIN i END znajduje się kod wykonywany przez procedurę.

Wyjątki, błędy pojawiające się podczas wykonywania kodu, występują w jednym z dwóch typów:

  1. Wyjątki pre-definiowane (wstępnie zdefiniowane wyjątki).
  2. Wyjątki zdefiniowane przez użytkownika.

Wyjątki zdefiniowane przez użytkownika można uruchomić przy pomocy komendy RAISE, składnia :

 RAISE <exception name>;

Oracle zdefiniowało wstępnie podstawowe wyjątki np. NO_DATA_FOUND, TOO_MANY_ROWS, itp. Każdy wyjątek posiada numer błędu (SQL Error Number) i związaną z nim treść (SQL Error Message). Dostęp do numeru i treści błędu można uzyskać poprzez użycie funkcji SQLCODE i SQLERRM.

[ edytuj ] Zmienne

W bloku deklaracji , jak sama nazwa wskazuje, deklaruje się i ( opcjonalnie ) inicjuje zmienne . Jeśli zmienna nie jest zainicjowana jej wartość jest automatycznie ustawiana na NULL.

Przykład:

DECLARE
  liczba1 NUMBER(2);
  liczba2 NUMBER(4, 2)     := 17.25;
  text1   VARCHAR2(12)  := 'Waldek';
  data1   DATE          := SYSDATE;        -- obecna data i czas.
BEGIN
  SELECT numer_ulicy
  INTO   liczba1
  FROM   address
  WHERE  name = text1;
END;

[ edytuj ] Zmienne numeryczne

nazwa_zmiennej number(P[, S]) := wartość;

Typ NUMBER w PL/SQL jest identyczny z typem NUMBER z bazy danych Oracle, może przechowywać liczby zmiennoprzecinkowe jak i całkowite. Przy deklaracji tego typu możemy podać precyzję (P), czyli łączną liczbę cyfr jaka będzie służyła do zapisu wartości, oraz skale (S), czyli liczbę cyfr po przecinku (jeśli wartość skali jest dodatnia) lub liczbę cyfr zaokrąglonych na lewo od przecinka (jeśli wartość S jest ujemna).

Inne typy danych numerycznych: binary_float, binary_double, dec, decimal, double precision, float, integer, int, numeric, real, smallint, binary_integer

[ edytuj ] Zmienne znakowe

nazwa_zmiennej varchar2 ( L ) := 'Tekst' ;

Aby określić typ zmiennej znakowej należy po definicji nazwy zmiennej określić typ na VARCHAR2. W nawiasie określamy liczbę bajtów (L) jaka będzie używana do przechowywania wartości zmiennej.

Inne typy danych dla zmiennych znakowych: varchar, char, long, raw, long raw, nchar, nchar2, clob, blob, bfile

[ edytuj ] Zmienne logiczne (Boolean)

nazwa_zmiennej boolean:= true;

Zmienne logiczne przechowują wartości: TRUE (prawda), FALSE (fałsz) lub NULL.

[ edytuj ] Data i czas

nazwa_zmiennej date := '01-Jan-2005';

w PL/SQL do obsługi daty i czasu służą typy: DATE, TIMESTAMP i INTERVAL. Najczęściej stosowany jest typ DATE.

Do konwersji zmiennej typu znakowego (np.varchar2) do typu DATE służy funkcja "TO_DATE". Funkcja zamienia podany ciąg znaków na podstawie podanej definicji w wywołaniu funkcji, np.

to_date('31-12-2004', 'dd-mm-yyyy')

Do odwrotnej konwersji, tj. z typu DATE do typów znakowych należy stosować funkcji "TO_CHAR", która przyjmuje datę i zwraca informację w formacie VARCHAR2, np.

to_char(SYSDATE,  'DD:MM:YYYY HH24:MI:SS')


[ edytuj ] Historia

PL/SQL pierwszy raz pojawił się w Oracle Forms v3. Parę lat później został zawarty w bazie danych Oracle v7 (do tworzenia procedur, funkcji, pakietów, wyzwalaczy i bloków anonimowych), następnie w Oracle Reports v2.




Walka na noże w amerykańskiej kampanii prezydenckiej
Zaostrza się kampania prezydencka w USA, pełna wzajemnych oskarżeń i ataków personalnych. Prezydent Barack Obama określa swego republikańskiego oponenta Mitta Romney'a mianem bezlitosnego kapitalisty, Romney natomiast oskarża go o powiększenie długu publicznego.



Największe organizacje lekarzy powołały sztab kryzysowy
Najważniejsze organizacje lekarskie w Polsce powołały sztab kryzysowy. Wezwał on medyków i świadczeniodawców do niepodpisywania umów z NFZ na wystawianie recept refundowanych.



Nowy wiersz Grassa, tym razem na temat Grecji
W niecałe dwa miesiące po opublikowaniu krytykującego Izrael wiersza niemiecki laureat literackiej nagrody Nobla Guenter Grass ponownie wdał się w poetycką polemikę na aktualny polityczny temat - tym razem postępowania UE wobec pogrążonej w kryzysie Grecji.



Odwrócenie trendów? PO już nie traci
Platforma Obywatelska zyskuje na poparciu, PiS traci. Różnica między tymi partiami wynosi 10 procent - takie są wyniki najnowszego sondażu telefonicznego TNS Polska dla programu Forum w Telewizji Polskiej.



Kombatanci upokorzeni na granicy? PiS interweniuje
Klub Parlamentarny PiS domaga się od premiera reakcji na potraktowanie kombatantów na granicy polsko-białoruskiej. Weterani, którzy jechali do Polski na zjazd łagierników-żołnierzy AK, zostali - według PiS - upokorzeni przez polską Straż Graniczną.



Home Page , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,