PL/SQL to język o strukturze blokowej, który umożliwia programistom łączenie możliwości SQL z instrukcjami proceduralnymi. Wszystkie instrukcje bloku są przekazywane jednocześnie do silnika Oracle, co zwiększa prędkość przetwarzania i zmniejsza ruch.
Podstawy PL/SQL
- •PL/SQL oznacza rozszerzenia języka proceduralnego do strukturalnego języka zapytań (SQL).
- PL/SQL to połączenie języka SQL z funkcjami proceduralnymi języków programowania.
- Oracle używa silnika PL/SQL do przetwarzania instrukcji PL/SQL.
- PL/SQL zawiera elementy języka proceduralnego, takie jak warunki i pętle. Umożliwia deklarację stałych i zmiennych, procedur i funkcji, typów i zmiennych tych typów oraz wyzwalaczy.
Wady SQL:
- SQL nie zapewnia programistom techniki sprawdzania warunków, zapętlania i rozgałęziania.
- Instrukcje SQL są przekazywane do silnika Oracle pojedynczo, co zwiększa ruch i zmniejsza prędkość.
- SQL nie ma możliwości sprawdzania błędów podczas manipulacji danymi.
Cechy PL/SQL:
- PL/SQL jest w zasadzie językiem proceduralnym, który zapewnia funkcjonalność podejmowania decyzji, iterację i wiele innych funkcji proceduralnych języków programowania.
- PL/SQL może wykonać wiele zapytań w jednym bloku za pomocą jednego polecenia.
- Można utworzyć jednostkę PL/SQL, taką jak procedury, funkcje, pakiety, wyzwalacze i typy, które są przechowywane w bazie danych do ponownego wykorzystania przez aplikacje.
- PL/SQL zapewnia funkcję obsługi wyjątku występującego w bloku PL/SQL, znanego jako blok obsługi wyjątków.
- Aplikacje napisane w języku PL/SQL można przenosić na sprzęt komputerowy lub system operacyjny, na którym działa Oracle.
- PL/SQL Oferuje rozbudowaną kontrolę błędów.
Różnice pomiędzy SQL i PL/SQL:
SQL | PL/SQL |
SQL to pojedyncze zapytanie używane do wykonywania operacji DML i DDL. | PL/SQL to blok kodów, który służył do pisania całych bloków programu/procedury/funkcji itp. |
Ma charakter deklaratywny i określa, co należy zrobić, a nie w jaki sposób. | PL/SQL jest procedurą, która definiuje, w jaki sposób należy wykonać określone czynności. |
Wykonaj jako pojedynczą instrukcję. | Wykonaj jako cały blok. |
Używany głównie do manipulacji danymi. | Używany głównie do tworzenia aplikacji. |
Nie może zawierać kodu PL/SQL. | Jest rozszerzeniem SQL, więc może zawierać w sobie SQL. |
Struktura bloku PL/SQL:
PL/SQL rozszerza SQL, dodając konstrukcje występujące w językach proceduralnych, w wyniku czego język strukturalny jest potężniejszy niż SQL. Podstawową jednostką w PL/SQL jest blok. Wszystkie programy PL/SQL składają się z bloków, które można zagnieżdżać jeden w drugim.
Zwykle każdy blok wykonuje w programie logiczną akcję. Blok ma następującą strukturę:
DECLARE declaration statements; BEGIN executable statements EXCEPTIONS exception handling statements END;>
- Zadeklaruj, że sekcja zaczyna się od OGŁOSIĆ słowo kluczowe, w którym można zadeklarować zmienne, stałe, rekordy jako kursory, które tymczasowo przechowują dane. Zasadniczo polega na definicji identyfikatorów PL/SQL. Ta część kodu jest opcjonalna.
- Sekcja wykonania zaczyna się od ZACZYNAĆ i kończy się KONIEC słowo kluczowe. Jest to sekcja obowiązkowa, w której zapisano logikę programu umożliwiającą wykonanie dowolnego zadania, takiego jak pętle i instrukcje warunkowe. Wspiera wszystko DML polecenia, DDL poleceń i wbudowanych funkcji SQL*PLUS.
- Sekcja wyjątków zaczyna się od WYJĄTEK słowo kluczowe. Ta sekcja jest opcjonalna i zawiera instrukcje wykonywane w przypadku wystąpienia błędu wykonania. W tej sekcji można obsłużyć wszelkie wyjątki.
Identyfikatory PL/SQL
Istnieje kilka identyfikatorów PL/SQL, takich jak zmienne, stałe, procedury, kursory, wyzwalacze itp.
- Zmienne : Podobnie jak kilka innych języków programowania, zmienne w PL/SQL muszą zostać zadeklarowane przed ich użyciem. Powinny mieć również prawidłową nazwę i typ danych. Składnia deklaracji zmiennych:
variable_name datatype [NOT NULL := value ];>
- Przykład pokazujący, jak zadeklarować zmienne w PL/SQL:
C
Java 8
SQL>USTAW WYJŚCIE SERWERA NA;> SQL>OŚWIADCZ> > var1 INTEGER;> > var2 REAL;> > var3 varchar2(20) ;> BEGIN> > null;> END;> /> |
>
>
- Wyjście:
PL/SQL procedure successfully completed.>
- Wyjaśnienie:
- WŁĄCZ WYJŚCIE SERWERA : Służy do wyświetlania bufora używanego przez dbms_output.
- zmienna1 LICZBA CAŁKOWITA: Jest to deklaracja zmiennej o nazwie zm.1 który jest typu całkowitego. Istnieje wiele innych typów danych, których można użyć, takich jak float, int, real, smallint, long itp. Obsługuje również zmienne używane w SQL, a także NUMBER (prec, skala), varchar, varchar2 itp.
- Procedura PL/SQL została pomyślnie zakończona.: Jest wyświetlany, gdy kod został pomyślnie skompilowany i wykonany.
- Ukośnik (/) po END;: Ukośnik (/) informuje SQL*Plus o wykonaniu bloku.
- Operator przypisania (:=) : Służy do przypisania wartości zmiennej.
- Wyświetlanie wyników : Dane wyjściowe są wyświetlane przy użyciu DBMS_OUTPUT, który jest wbudowanym pakietem umożliwiającym użytkownikowi wyświetlanie wyników, informacji o debugowaniu i wysyłanie komunikatów z bloków PL/SQL, podprogramów, pakietów i wyzwalaczy. Zobaczmy przykład, jak wyświetlić wiadomość przy użyciu PL/SQL:
C
SQL>USTAW WYJŚCIE SERWERA NA;> SQL>OŚWIADCZ> > var varchar2(40) :=> 'I love GeeksForGeeks'> ;> > BEGIN> > dbms_output.put_line(var);> > END;> > /> |
>
>
- Wyjście:
I love GeeksForGeeks PL/SQL procedure successfully completed.>
- Wyjaśnienie:
- dbms_output.put_line : To polecenie służy do kierowania danych wyjściowych PL/SQL na ekran.
- Korzystanie z komentarzy : Podobnie jak w wielu innych językach programowania, również w PL/SQL można umieszczać komentarze w kodzie, co nie ma wpływu na kod. Istnieją dwie składnie tworzenia komentarzy w PL/SQL:
- Pojedynczy komentarz: Aby utworzyć komentarz jednoliniowy, należy użyć symbolu– –Jest używane.
- Komentarz wielowierszowy: Aby utworzyć komentarze rozciągające się na kilka linii, należy użyć symbolu/*I*/Jest używane.
- Pobieranie danych wejściowych od użytkownika : Podobnie jak w innych językach programowania, również w PL/SQL możemy pobierać dane wejściowe od użytkownika i przechowywać je w zmiennej. Zobaczmy przykład pokazujący, jak pobierać dane wejściowe od użytkowników w PL/SQL:
C
SQL>USTAW WYJŚCIE SERWERA NA;> SQL>OŚWIADCZ> > -- taking input> for> variable a> > a number := &a;> > > -- taking input> for> variable b> > b varchar2(30) := &b;> > BEGIN> > null;> > END;> > /> |
nieokreślone nachylenie
>
>
- Wyjście:
Enter value for a: 24 old 2: a number := &a; new 2: a number := 24; Enter value for b: 'GeeksForGeeks' old 3: b varchar2(30) := &b; new 3: b varchar2(30) := 'GeeksForGeeks'; PL/SQL procedure successfully completed.>
- (***) Zobaczmy przykład PL/SQL, aby zademonstrować wszystkie powyższe koncepcje w jednym bloku kodu.
C
--PL/SQL code to print sum of two numbers taken from the user.> SQL>USTAW WYJŚCIE SERWERA NA;> SQL>OŚWIADCZ> > > -- taking input> for> variable a> > a integer := &a ;> > > -- taking input> for> variable b> > b integer := &b ;> > c integer ;> > BEGIN> > c := a + b ;> > dbms_output.put_line(> 'Sum of '> ||a||> ' and '> ||b||> ' is = '> ||c);> > END;> > /> |
>
>
Enter value for a: 2 Enter value for b: 3 Sum of 2 and 3 is = 5 PL/SQL procedure successfully completed.>
Środowisko wykonawcze PL/SQL:
Silnik PL/SQL znajduje się w silniku Oracle. Silnik Oracle może przetwarzać nie tylko pojedynczą instrukcję SQL, ale także bloki wielu instrukcji. Wywołanie silnika Oracle musi zostać wykonane tylko raz, aby wykonać dowolną liczbę instrukcji SQL, jeśli te instrukcje SQL są zawarte w bloku PL/SQL.