PL / SQL to język proceduralny, który przezwycięża napotykane niedociągnięcia Strukturalny język zapytań . Jest to rozszerzenie SQL i możemy nawet bezproblemowo używać zapytań SQL w dowolnej aplikacji lub programie PL / SQL. W tym samouczku dotyczącym języka PL / SQL szczegółowo omówimy podstawowe pojęcia dotyczące języka PL / SQL. W tym artykule omówiono następujące tematy.
- Co to jest PL / SQL?
- Struktury blokowe w PL / SQL
- Zmienne PL / SQL
- Funkcja w PL / SQL
- Procedura PL / SQL
- Blok zagnieżdżony
- Instrukcja IF
- Instrukcja CASE
- Instrukcja pętli
- Wyjątkowa obsługa
Co to jest PL / SQL?
Oznacza to rozszerzenie języka proceduralnego na ustrukturyzowany język zapytań . Firma Oracle stworzyła PL / SQL, która rozszerza niektóre ograniczenia SQL, aby zapewnić bardziej kompleksowe rozwiązanie do tworzenia aplikacji o znaczeniu krytycznym działających w wyroczni .
funkcje
PL / SQL zapewnia funkcjonalność języka proceduralnego, taką jak podejmowanie decyzji, iteracja itp.
Za pomocą jednego polecenia PL / SQL może wykonać kilka zapytań.
Możemy również ponownie wykorzystać jednostki PL / SQL, takie jak funkcje, wyzwalacze, procedury itp., Które są przechowywane w bazie danych po utworzeniu.
PL / SQL ma również blok obsługi wyjątków, który obsługuje wyjątki w PL / SQL.
Rozbudowane sprawdzanie błędów jest również możliwe przy użyciu PL / SQL
Aplikacje napisane w PL / SQL można przenosić na inny sprzęt, a systemy operacyjne, pod warunkiem, że Oracle musi działać.
PL / SQL vs SQL
SQL | PL / SQL |
SQL to pojedyncze zapytanie używane do wykonywania operacji DDL i DML | PL / SQL to blok kodów używany do definiowania całego programu lub procedury / funkcji itp |
Nie określa, jak należy coś zrobić, a raczej określa, co należy zrobić | PL / SQL określa, jak należy to zrobić |
Wykonuje pojedynczą instrukcję | Wykonuje jednocześnie blok instrukcji. |
SQL jest używany głównie do manipulowania danymi | Z kolei PL / SQL służy do tworzenia aplikacji |
Nie może zawierać kodu PL / SQL | Ponieważ jest to rozszerzenie SQL, może zawierać kod SQL |
Struktury blokowe w PL / SQL
PL / SQL zazwyczaj organizuje kod w bloki. Blok kodu bez nazwy jest nazywany blokiem anonimowym. Jest znany jako anonimowy blok, ponieważ nie jest zapisywany w bazie danych Oracle. Przyjrzyjmy się anonimowemu blokowi w PL / SQL.
[DECLARE] instrukcje deklaracji [BEGIN] instrukcje wykonania [EXCEPTION] instrukcje wyjątków END /
Patrząc na powyższy diagram widzimy, że struktura blokowa jest podzielona na cztery części, tj. Deklaracja, początek, wyjątek i koniec. Spróbujmy zrozumieć, jak działa struktura bloków w PL / SQL. Spośród wszystkich tych sekcji sekcja wykonania jest obowiązkowa, a pozostałe są opcjonalne.
OGŁOSIĆ słowo kluczowe jest używane do sekcji deklaracji służy do deklarowania typów danych i struktur, takich jak zmienne, funkcje itp.
ZACZYNAĆ słowo kluczowe jest używane w sekcji wykonania. Jest obowiązkowy i zawiera wszystkie oświadczenia, które należy wykonać. W tym bloku zdefiniowana jest logika biznesowa, w tym bloku możemy używać zarówno instrukcji proceduralnych, jak i SQL.
Plik WYJĄTEK słowo kluczowe jest używane w sekcji wyjątków. Zawiera wszystkie instrukcje wyjątków.
KONIEC słowo kluczowe oznacza koniec bloku, a lewy ukośnik „/” informuje narzędzie, którego używasz (Oracle Database Tool) do wykonania bloku PL / SQL.
Oto prosty przykład pokazujący, jak możemy wykorzystać kod PL / SQL.
BEGIN NULL END /
Teraz, gdy wiemy, jak działa struktura bloków w PL / SQL, pozwól nam zrozumieć różne aspekty PL / SQL, takie jak deklarowanie, nazywanie i przypisywanie wartości do zmiennych.
Zmienne PL / SQL
Zmienna w PL / SQL to w zasadzie nazwa, która jest zmienna lub tymczasowe miejsce przechowywania, które obsługuje określony typ danych. Przyjrzyjmy się, jak możemy używać zmiennych w programie PL / SQL.
Reguły nazewnictwa zmiennych
PL / SQL przestrzega następujących zasad nazywania zmiennych.
Zmienna nie może mieć więcej niż 31 znaków
Nazwa zmiennej powinna zaczynać się od znaku ASCII. Ponieważ w PL / SQL rozróżniana jest wielkość liter, duża i mała litera będą różnymi zmiennymi.
Po pierwszym znaku musi znajdować się znak specjalny ($, _) lub dowolna liczba.
Konwencje nazewnictwa
Użyj następujących konwencji nazewnictwa wymienionych poniżej, aby użyć zmiennych.
Prefiks | Typ danych |
v_ | VARCHAR2 |
n_ | NUMER |
t_ | STÓŁ |
r_ | RZĄD |
re_ | DATA |
b_ | BOOLEAN |
Deklaracja
Spróbujmy zrozumieć, jak deklaruje się zmienną w PL / SQL
Przykład frameworka testowego selenium webdriver
Deklaracja zawiera nazwę zmiennej, po której następuje typ danych i oddzielone średnikiem. Poniżej znajduje się przykład pokazujący, jak można zadeklarować zmienną w PL / SQL.
DECLARE v_name VARCHAR (25) n_age NUMBER (3) BEGIN NULL END
Możesz również dodać długość typu danych, tak jak zrobiliśmy w powyższym przykładzie.
Kotwice
Kotwica zasadniczo odnosi się do użycia słowa kluczowego% TYPE, które deklaruje zmienną o typie danych powiązanym z typem danych danej kolumny w tabeli.
Spójrz na przykład, aby to zrozumieć. Załóżmy, że mamy STÓŁ PRACOWNIKÓW, możemy użyć kotwic w następujący sposób.
DECLARE v_name PRACOWNIK.NAME% TYPE n_age EMPLOYEE.AGE% TYPE BEGIN NULL END /
Zadanie
Przypisanie zmiennej jest dość łatwe, możemy użyć operatora przypisania, aby przypisać wartości do zmiennej. Poniższy przykład pokazuje, jak możemy przypisać wartości do zmiennej.
DECLARE v_name VARCHAR (20) n_course VARCHAR (10) BEGIN v_name = 'edureka' v_course = 'sql' END /
Inicjalizacja
Możemy również zainicjować wartość zmiennej w sekcji deklaracji. Poniższy przykład pokazuje, jak możemy zainicjować wartości w zmiennej.
DECLARE v_name VARCHAR (20) = 'edureka' n_course VARCHAR (10) = 'sql' BEGIN NULL END /
Teraz, gdy już wiemy, jak możemy pracować ze zmiennymi, spróbujmy zrozumieć, jak będziemy używać funkcji w PL / SQL.
Funkcja w PL / SQL
Funkcja w PL / SQL to w zasadzie nazwany blok, który zwraca wartość. Znany jest również jako podprogram lub podprogram, poniższa składnia pokazuje, jak możemy używać funkcji w PL / SQL.
CREATE [OR REPLACE] FUNCTION nazwa_funkcji [(parametr_1 [IN] [OUT] data_type, parametr_2 [IN] [OUT] data_type, parametr_N [IN] [OUT] data_type] RETURN return_data_type IS BEGIN instrukcje return return_data_type EXCEPTION END /
Przede wszystkim musisz podać nazwę funkcji po słowie kluczowym. Nazwa funkcji musi zaczynać się od czasownika. Funkcja może nie mieć żadnego, jednego lub więcej parametrów, które określamy w parametrach. Musimy jawnie określić typ danych każdego parametru, a następnie przychodzi tryb, który może być dowolny z poniższych.
W - Parametr IN jest parametrem tylko do odczytu.
WYJŚCIE - Jest to parametr tylko do zapisu
ansibl vs marionetka vs szef kuchni
WEJŚCIE - Parametr IN OUT jest zarówno parametrem do odczytu i zapisu.
Oto prosty przykład pokazujący, jak używamy funkcji w PL / SQL.
UTWÓRZ LUB ZAMIEŃ FUNKCJĘ try_parse (iv_number W VARCHAR2) RETURN NUMBER IS BEGIN RETURN to_number (iv_number) WYJĄTEK KIEDY inni THEN RETURN NULL END
Wywołanie funkcji
Spróbujmy wywołać funkcję, którą utworzyliśmy w anonimowym bloku w poniższym przykładzie.
USTAW WYJŚCIE SERWERA ROZMIAR 1000000 ZADEKLARUJ n_x numer n_y numer n_z numer BEGIN n_x: = try_parse ('256') n_y: = try_parse ('29 .72 ') n_z: = try_parse (' pqrs ') DBMS_OUTPUT.PUT_LINE (n_xP) DBMS_OUTLINE (n_xP) DBMS_OUTLINE (n_xP) n_y) DBMS_OUTPUT.PUT_LINE (n_z) END /
Możemy również wywołać tę funkcję w instrukcji SELECT. Teraz, gdy wiemy, jak możemy używać funkcji w PL / SQL, spróbujmy zrozumieć, jak pracujemy z procedurami w PL / SQL.
Procedura PL / SQL
Procedura to w zasadzie blok, który wykonuje określone zadanie. Za pomocą procedury możemy opakować lub hermetyzować złożoną logikę biznesową i ponownie wykorzystać ją zarówno w warstwie aplikacji, jak i bazy danych.
Spójrzmy na prosty przykład, aby zrozumieć, jak ta procedura działa w PL / SQL
UTWÓRZ LUB ZAMIEŃ PROCEDURĘ adjust_salary (in_employee_id IN EMPLOYEES.EMPLOYEE_ID% TYPE, in_percent IN NUMBER) IS BEGIN - zaktualizuj wynagrodzenie pracownika AKTUALIZUJ pracowników SET pensja = pensja + wynagrodzenie * in_percent / 100 WHERE worker_id = in_employee_id END
W powyższym przykładzie mamy dwa parametry, procedura dostosowuje wynagrodzenie o zadany procent, a słowo kluczowe UPDATE aktualizuje wartość w informacjach o wynagrodzeniu.
Nagłówek procedury
Sekcja znajdująca się przed słowem kluczowym IS jest nazywana nagłówkiem procedury. Poniżej znajduje się kilka wskazówek, z którymi należy się zapoznać podczas pracy z procedurami.
schemat - Jest to opcjonalna nazwa schematu, do którego należy procedura.
Nazwa - Nazwa procedury, która powinna zaczynać się od czasownika.
parametry - Jest to opcjonalna lista parametrów.
AUTHID - Określa, czy procedura będzie wykonywana z uprawnieniami bieżącego użytkownika czy pierwotnego właściciela procedury.
Ciało procedury
Wszystko, co następuje po słowie kluczowym IS, nazywane jest treścią procedury. W treści procedury mamy deklarację, wyjątek i instrukcje wykonania. W przeciwieństwie do funkcji, słowo kluczowe RETURN w procedurze służy do zatrzymania wykonywania i zwrócenia kontroli wywołującemu.
Wywołanie procedury
Zobaczmy, jak możemy wywołać procedurę w PL / SQL.
EXEC nazwa_procedury (param1, param2 & hellipparamN)
Możemy wywołać procedury bez parametrów, używając tylko słowa kluczowego EXEC i nazwy procedury. Teraz, gdy wiemy, jak możemy pracować z procedurami, spróbujmy zrozumieć, w jaki sposób zagnieżdżone bloki są używane w PL / SQL.
Blok zagnieżdżony
Zagnieżdżony blok to nic innego jak połączenie jednego lub więcej bloków PL / SQL w celu uzyskania lepszej kontroli nad wykonywaniem i wyjątkowej obsługi programu.
Oto prosty przykład zagnieżdżonego bloku.
USTAW SERVEROUTPUT NA ROZMIAR 1000000 DECLARE n_emp_id PRACOWNICY.EMPLOYEE_ID% TYPE: = & emp_id1 BEGIN DECLARE n_emp_id workers.employee_id% TYPE: = & emp_id2 v_name workers.first_name% TYPE BEGIN_id1 BEGIN DECLARE n_emp_id workers.employee_id% TYPE: = & emp_id2 v_name workers.first_name% TYPE BEGIN_id1 BEGIN DECLARE n_emp_id workers. pracownika '|| n_emp_id ||' to '|| v_name) WYJĄTEK GDY no_data_found THEN DBMS_OUTPUT.PUT_LINE (' Employee '|| n_emp_id ||' not found ') END END /
Zewnętrzny blok PL / SQL w powyższym przykładzie jest znany jako blok nadrzędny lub blok otaczający, natomiast blok wewnętrzny jest znany jako blok potomny lub blok zamknięty.
Używanie zmiennych o tych samych nazwach w obu blokach nie jest dobrym pomysłem, ponieważ podczas wykonywania podrzędna zmienna blokowa przesłania zmienną bloku macierzystego. Dzieje się tak, ponieważ PL / SQL nadaje priorytet zmiennej wewnątrz własnego bloku.
Zablokuj etykietę
Możemy rozwiązać ten problem dzięki etykiecie bloku, która pomaga nam tworzyć odniesienia do zmiennych wewnątrz bloków za pomocą etykiety.
Oto prosty przykład pokazujący, jak możemy użyć etykiety blokowej.
<>DEKLARUJ ... POCZĄTEK ... KONIEC
Używanie etykiety blokowej pomaga poprawić czytelność kodu, uzyskać lepszą kontrolę i tworzyć odniesienia do bloków. Teraz, gdy wiemy, jak możemy pracować z zagnieżdżonymi blokami, spróbujmy zrozumieć, jak działa instrukcja IF STATEMENT w PL / SQL.
Instrukcja IF
PL / SQL ma trzy ZESTAWIENIA IF
JEŚLI NASTĘPNIE - Jest to najprostsze IF STATEMENT jeśli warunek jest prawdziwy, instrukcje zostaną wykonane, jeśli warunek jest fałszywy, nic nie robi.
JEŚLI-TO JESZCZE - W tym przypadku klauzula ELSE jest dodawana dla alternatywnej sekwencji instrukcji.
JEŻELI-TO-ELSEIF - Pozwala nam wykonać sekwencję wielu warunków testowych.
Składnia IF-THEN
różnica między C # i C ++
JEŻELI warunek TO sequence_of_statements KONIEC JEŻELI
Składnia IF-THEN-ELSE
JEŻELI warunek WTEDY sekwencja_jedy_______________________________________________________________ tekstach_ ]_KON
Składnia IF-THEN-ELSEIF
JEŻELI warunek1 TO sekwencja_ instrukcji1 ELSIF warunek2 TO sekwencja_ instrukcji2 ELSE sekwencja_ instrukcji3 KONIEC JEŻELI
Teraz, gdy skończyliśmy z instrukcją IF STATEMENT, przyjrzyjmy się instrukcji CASE w PL / SQL.
Instrukcja CASE
Instrukcja CASE zasadniczo pomaga w wykonywaniu sekwencji instrukcji na podstawie selektora. W tym przypadku selektorem może być wszystko, może to być zmienna, funkcja lub proste wyrażenie. Oto prosty przykład pokazujący składnię instrukcji CASE w PL / SQL.
[<>] CASE [TRUE | selector] KIEDY wyrażenie1 TO sekwencja_ instrukcji1 KIEDY wyrażenie2 TO sekwencja_ instrukcji2 ... KIEDY wyrażenieN TO sekwencja_ instrukcjiN [ELSE sekwencja_ instrukcjiN + 1] KONIEC CASE [nazwa_ etykiety]
W powyższej składni po słowie kluczowym CASE znajduje się selektor. PL / SQL oceni selektor tylko raz, aby określić, która instrukcja musi zostać wykonana.
Po selektorze znajduje się słowo kluczowe WHEN. Jeśli wyrażenie spełnia kryteria selektora, wówczas wykonywana jest odpowiednia instrukcja po słowie kluczowym THEN.
Teraz, gdy wiemy, jak możemy użyć instrukcji CASE, spróbujmy zrozumieć, w jaki sposób będziemy używać instrukcji pętli w PL / SQL.
Instrukcja pętli
Instrukcja pętli w PL / SQL jest instrukcją iteracyjną, która umożliwia wielokrotne wykonywanie sekwencji instrukcji. Oto prosty przykład pokazujący składnię instrukcji pętli w PL / SQL.
LOOP sequence_of_statements END LOOP
Pomiędzy słowami kluczowymi LOOP i END LOOP musi znajdować się co najmniej jedna instrukcja wykonywalna.
Pętla z instrukcją EXIT
Instrukcje EXIT i EXIT when pozwalają na wyjście z pętli. Instrukcja EXIT WHEN warunkowo kończy pętlę, podczas gdy EXIT bezwarunkowo kończy wykonywanie.
LOOP ... EXIT WHEN warunek END LOOP
Etykieta pętli
Etykieta pętli służy do zakwalifikowania nazwy zmiennej licznika pętli, gdy jest używana w zagnieżdżonej pętli. Poniżej znajduje się składnia etykiety pętli.
<>LOOP sequence_of_statements Etykieta END LOOP
Teraz, gdy wiemy, jak możemy używać instrukcji pętli, przyjrzyjmy się instrukcjom while, aby lepiej je zrozumieć.
Instrukcja While Loop
Możemy użyć instrukcji pętli WHILE, gdy liczba wykonań nie jest zdefiniowana przed rozpoczęciem wykonywania. Poniższa składnia jest używana dla instrukcji pętli WHILE w PL / SQL.
WHILE warunek LOOP sequence_of_statements END LOOP
Warunek w składni jest wartością logiczną lub wyrażeniem, którego wynikiem jest PRAWDA, FAŁSZ lub NULL. Jeśli warunek ma wartość TRUE, instrukcje zostaną wykonane, jeśli ma wartość FALSE, wykonanie zostanie zatrzymane i sterowanie przejdzie do następnej instrukcji wykonywalnej.
Teraz, gdy już wiemy, jak możemy użyć instrukcji pętli WHILE, przyjrzyjmy się instrukcji pętli FOR.
Instrukcja pętli For
Instrukcja pętli FOR w PL / SQL pozwala nam wykonać sekwencję instrukcji określoną liczbę razy. Poniżej znajduje się składnia użycia instrukcji pętli FOR w PL / SQL
FOR loop_counter IN [REVERSE] lower_bound .. high_bound LOOP sequence_of_statements END LOOP
PL / SQL automatycznie tworzy zmienną lokalną loop_counter z typem danych INTEGER dla pętli, dzięki czemu nie trzeba jej jawnie deklarować. Dolna granica ... wyższa granica to zakres, po którym pętla się iteruje. Ponadto między słowami kluczowymi LOOP i END LOOP musi znajdować się co najmniej jedna instrukcja wykonywalna.
Teraz, gdy wiemy, jak możemy używać instrukcji pętli w PL / SQL, przyjrzyjmy się wyjątkowej obsłudze w PL / SQL.
Wyjątkowa obsługa
W PL / SQL każdy błąd jest traktowany jako wyjątek. Wyjątek można traktować jako specjalny warunek, który może zmienić lub zmienić przepływ wykonywania. W PL / SQL istnieją dwa rodzaje wyjątków.
Wyjątek systemowy - Jest podnoszony przez środowisko wykonawcze PL / SQL, gdy wykryje błąd.
Wyjątek zdefiniowany przez programistę - Te wyjątki są definiowane przez programistę w określonej aplikacji.
Definiowanie wyjątku
Wyjątek w PL / SQL musi zostać zadeklarowany, zanim będzie można go zgłosić. Możemy zdefiniować wyjątek za pomocą słowa kluczowego EXCEPTION, tak jak to zrobiliśmy w poniższym przykładzie.
EXCEPTION_NAME EXCEPTION
Aby zgłosić wyjątek, używamy słowa kluczowego RAISE.
RAISE EXCEPTION_NAME
A więc to wszystko o PL / SQL, mam nadzieję, że ten artykuł pomógł ci w dodaniu wartości do twojej wiedzy. Aby uzyskać więcej informacji na temat SQL lub baz danych, możesz zapoznać się z naszą obszerną listą do czytania tutaj: .
Jeśli chcesz uzyskać ustrukturyzowane szkolenie dotyczące MySQL, sprawdź nasze który obejmuje szkolenie na żywo prowadzone przez instruktora i rzeczywiste doświadczenie projektowe. To szkolenie pomoże Ci dogłębnie zrozumieć MySQL i osiągnąć mistrzostwo w tym temacie.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy w „ Samouczek PL / SQL ”I skontaktuję się z Tobą.