VOOZH about

URL: https://pl.wikipedia.org/wiki/PL/SQL

⇱ PL/SQL – Wikipedia, wolna encyklopedia


Przejdź do zawartości
Z Wikipedii, wolnej encyklopedii
Ten artykuł od 2017-02 wymaga zweryfikowania podanych informacji.
Należy podać wiarygodne źródła w formie przypisów bibliograficznych.
Część lub nawet wszystkie informacje w artykule mogą być nieprawdziwe. Jako pozbawione źródeł mogą zostać zakwestionowane i usunięte.
Sprawdź w źródłach: Encyklopedia PWN • Google Books • Google Scholar • BazHum • BazTech • RCIN • Internet Archive (texts / inlibrary)
Po wyeliminowaniu niedoskonałości należy usunąć szablon {{Dopracować}} z tego artykułu.
PL/SQL
Paradygmat

wieloparadygmatowy, proceduralny

Typowanie

statyczne, silne

Twórca

Oracle Corporation

Platforma systemowa

wieloplatformowy

Strona internetowa

PL/SQL oznacza proceduralny SQL – 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 Oracle Database 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.

Historia

[edytuj | edytuj kod]

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.

Podstawowa struktura kodu

[edytuj | edytuj kod]

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<exceptionname>;

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.

Zmienne

[edytuj | edytuj kod]

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

Przykład:

declare
liczba1number(2);
liczba2number(4,2):=17.25;
text1varchar2(12):='Waldek';
data1date:=SYSDATE;-- obecna data i czas.
begin
SELECTnumer_ulicy
intoliczba1
fromaddress
wherename=text1;
end;

Zmienne numeryczne

[edytuj | edytuj kod]

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 skalę (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

Zmienne znakowe

[edytuj | edytuj kod]
nazwa_zmiennejvarchar2(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

Zmienne logiczne (Boolean)

[edytuj | edytuj kod]
nazwa_zmiennejboolean:=true;

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

Data i czas

[edytuj | edytuj kod]
nazwa_zmiennejdate:='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')
1GL
2GL/
Język drugiej generacji/
Asembler
3GL /
Język trzeciej generacji
wieloparadygmatowe
proceduralne
i strukturalne
historyczne
inne
obiektowe
funkcyjne
edukacyjne
4GL/
Język czwartej generacji/
Język dziedzinowy
Języki zapytań do baz danych
Generatory raportów / stron
Przetwarzanie danych, analiza i raportowanie
5GL/Logiczne
Ezoteryczne
Inne