Database
 sql >> Baza danych >  >> RDS >> Database

Samouczek PL/SQL:Wszystko, co musisz wiedzieć o PL/SQL

PL/SQL to język proceduralny, który przezwycięża wady strukturalnego języka zapytań. Jest rozszerzeniem SQL i możemy nawet używać zapytań SQL bez żadnych kłopotów w dowolnej aplikacji lub programie PL/SQL. W tym samouczku dotyczącym PL/SQL omówimy szczegółowo podstawowe koncepcje PL/SQL. W tym artykule omówiono następujące tematy.

  • Co to jest PL/SQL?
    • Funkcje
    • PL/SQL a SQL
  • Struktury blokowe w PL/SQL
  • Zmienne PL/SQL
  • Funkcja w PL/SQL
  • Procedura PL/SQL
  • Zagnieżdżony blok
  • Oświadczenie IF
  • Oświadczenie CASE
  • Oświadczenie pętli
    • Podczas wykonywania pętli
    • Oświadczenie pętli for
  • Wyjątkowa obsługa

Co to jest PL/SQL?

Oznacza rozszerzenie języka proceduralnego na język ustrukturyzowanych zapytań. Oracle stworzyło PL/SQL, które rozszerza niektóre ograniczenia SQL, aby zapewnić bardziej kompleksowe rozwiązanie do tworzenia aplikacji o znaczeniu krytycznym działających w bazie danych Oracle.

Funkcje

  • PL/SQL zapewnia funkcjonalność języka proceduralnego, taką jak podejmowanie decyzji, iteracja itp.

  • Za pomocą jednego polecenia, PL/SQL może wykonać wiele 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.

  • Obszerne 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 i systemy operacyjne, pod warunkiem, że Oracle musi działać.

PL/SQL a 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 definiuje tak naprawdę, jak coś należy zrobić, raczej określa, co należy zrobić PL/SQL określa, jak należy coś zrobić
Wykonuje pojedynczą instrukcję Wykonuje blok instrukcji jednocześnie.
SQL służy głównie do manipulowania danymi PL/SQL służy natomiast do tworzenia aplikacji
Nie może zawierać kodu PL/SQL Ponieważ jest to rozszerzenie SQL, może zawierać w sobie 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 blok anonimowy, ponieważ nie jest zapisywany w bazie danych Oracle. Przyjrzyjmy się anonimowemu blokowi w PL/SQL.

[DECLARE] deklaracje deklaracji;[BEGIN] deklaracje wykonania; [EXCEPTION] deklaracje wyjątków;END;/

Patrząc na powyższy diagram widzimy, że struktura bloku jest podzielona na cztery części, tj. deklarację, 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 wszystkie pozostałe są opcjonalne.

  • DECLARE słowo kluczowe jest używane do dla sekcji deklaracji służy do deklarowania typów danych i struktur, takich jak zmienne, funkcje itp.

  • POCZĄTEK słowo kluczowe jest używane dla 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.

  • WYJĄTEK słowo kluczowe jest używane dla sekcji wyjątku. Zawiera wszystkie deklaracje wyjątków.

  • END słowo kluczowe oznacza koniec bloku, a 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 używać kodu PL/SQL.

POCZĄTEK NULL;END;/

Teraz, gdy wiemy już, jak działa struktura bloków w PL/SQL, zrozumiemy 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 zmienia lub tymczasowe miejsce przechowywania, które obsługuje określony typ danych. Przyjrzyjmy się, jak możemy używać zmiennych w programie PL/SQL.

Zasady nazewnictwa zmiennych

PL/SQL przestrzega następujących zasad nazewnictwa zmiennych.

  • Zmienna nie może mieć więcej niż 31 znaków

  • Nazwa zmiennej powinna zaczynać się od znaku ASCII. Ponieważ PL/SQL rozróżnia 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żywać zmiennych.

Prefiks Typ danych
v_ VARCHAR2
n_ LICZBA
t_ TABELA
r_ ROW
d_ DATA
b_ BOOLEAN

Deklaracja

Spróbujmy zrozumieć, jak deklaracja zmiennych odbywa się w PL/SQL

Deklaracja zawiera nazwę zmiennej, po której następuje typ danych, oddzielone średnikiem. Poniżej znajduje się przykład pokazujący, jak zadeklarować zmienną w PL/SQL.

DECLARE v_name VARCHAR(25); n_wiek NUMBER(3);BEGIN NULL;END;

Możesz również dodać długość typu danych, tak jak to zrobiliśmy w powyższym przykładzie.

Kotwice

Kotwica zasadniczo odnosi się do użycia słowa kluczowego %TYPE, które służy do deklarowania zmiennej z typem danych powiązanym z typem danych danej kolumny w tabeli.

Spójrz na przykład, aby to zrozumieć. Załóżmy, że mamy tabelę PRACOWNICY, możemy użyć kotwic w następujący sposób.

DECLARE v_name EMPLOYEE.NAME%TYPE; n_age EMPLOYEE.AGE%TYPE;BEGIN NULL;END;/

Zadanie

Przypisanie zmiennej jest dość łatwe, możemy użyć operatora przypisania do przypisania 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.

DECLAREv_name VARCHAR(20) ="edureka";n_course VARCHAR(10) ="sql";BEGIN NULL;END;/

Teraz, gdy wiemy, jak możemy pracować ze zmiennymi, spróbujmy zrozumieć, w jaki sposób 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ść. Jest również znany 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] typ_danych, parametr_2 [IN] [OUT] typ_danych, parametr_N [IN] [OUT] typ_danych] RETURN zwrot_typ_danych IS BEGIN instrukcje return typ_danych; WYJĄTEK END; /

Przede wszystkim musisz określić nazwę funkcji po słowie kluczowym. Nazwa funkcji musi zaczynać się od czasownika. Funkcja może nie mieć żadnego, może mieć jeden lub więcej parametrów, które określamy w parametrach. Musimy wyraźnie określić typ danych każdego parametru, a następnie pojawia się tryb, który może być jednym z następujących.

  • IN – Parametr IN jest parametrem tylko do odczytu.

  • OUT – Jest to parametr tylko do zapisu

  • IN OUT – Parametr IN OUT jest jednocześnie 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 IN VARCHAR2) NUMER ZWROTU JEST ROZPOCZĘCIEM POWROTU do_number(iv_number); WYJĄTEK, KIEDY inni TO ZWRACAJĄ NULL;END;

Wywołanie funkcji

Spróbujmy wywołać funkcję, którą stworzyliśmy w bloku anonimowym w poniższym przykładzie.

USTAW WYJŚCIE SERWERA NA ROZMIAR 1000000; ZADEKLARUJ n_x liczba; n_y liczba; liczba n_z;BEGIN n_x :=try_parse('256'); n_y :=try_parse('29.72'); n_z :=try_parse('pqrs'); DBMS_OUTPUT.PUT_LINE(n_x); DBMS_OUTPUT.PUT_LINE (n_y); DBMS_OUTPUT.PUT_LINE(n_z);END;/

Możemy również wywołać 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 zawinąć lub zawrzeć złożoną logikę biznesową i ponownie wykorzystać je zarówno w warstwie aplikacji, jak i bazy danych.

Rzućmy okiem na prosty przykład, aby zrozumieć, jak 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) ISBEGIN -- zaktualizuj wynagrodzenie pracownika AKTUALIZUJ pracowników SET pensja =pensja + pensja * in_percent / 100 WHERE worker_id =in_pre_emply; 

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 przed słowem kluczowym JEST nazywana jest nagłówkiem procedury. Poniżej znajduje się kilka wskazówek, z którymi należy się zapoznać podczas pracy z procedurami.

  • schema – 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 zostanie wykonana z przywilejem bieżącego użytkownika, czy pierwotnego właściciela procedury.

Organ procedury

Wszystko, co występuje po słowie kluczowym IS, jest nazywane treścią procedury. W treści procedury mamy deklarację, wyjątek i deklaracje wykonania. W przeciwieństwie do funkcji, słowo kluczowe RETURN w procedurze służy do zatrzymania wykonywania i zwrócenia kontroli do wywołującego.

Wywołanie procedury

Zobaczmy, jak możemy wywołać procedurę w PL/SQL.

 EXEC nazwa_procedury(parametr1,parametr2…parametrN);

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.

Zagnieżdżony blok

Zagnieżdżony blok to nic innego jak połączenie jednego lub więcej bloków PL/SQL, aby uzyskać lepszą kontrolę nad wykonaniem i wyjątkową obsługę programu.

Oto prosty przykład zagnieżdżonego bloku.

USTAW WYJŚCIE SERWERA NA ROZMIAR 1000000;ZADEKLARUJ n_emp_id EMPLOYEES.EMPLOYEE_ID%TYPE :=&emp_id1;BEGIN ZADEKLARUJ n_emp_id workers.employee_id%TYPE :=&emp_id2; v_name pracownicy.first_name%TYPE; BEGIN SELECT imie INTO v_name FROM pracowników WHERE id_pracownika =n_emp_id; DBMS_OUTPUT.PUT_LINE('Imię pracownika ' || n_emp_id || ' to ' || v_name); WYJĄTEK KIEDY no_data_found THEN DBMS_OUTPUT.PUT_LINE('Pracownik' || n_emp_id || 'nie znaleziono'); END;END;/

Zewnętrzny blok PL/SQL w powyższym przykładzie jest znany jako blok nadrzędny lub blok obejmujący, z drugiej strony blok wewnętrzny jest znany jako blok podrzędny lub zamknięty blok.

Nie jest dobrym pomysłem używanie zmiennych o tych samych nazwach w obu blokach, ponieważ podczas wykonywania zmienna bloku podrzędnego nadpisze zmienną bloku nadrzędnego. Dzieje się tak, ponieważ PL/SQL nadaje pierwszeństwo zmiennej wewnątrz jej własnego bloku.

Etykieta bloku

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 bloku.

<>DECLARE...BEGIN...END;

Korzystanie z etykiety bloku 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 JEŻELI STATEMENT w PL/SQL.

Oświadczenie IF

PL/SQL ma trzy STATEMENTY IF

  • IF-THEN – Jest to najprostsza JEŻELI STATEMENT jeśli warunek jest spełniony, instrukcje zostaną wykonane, jeśli warunek jest fałszywy, nic nie robi.

  • IF-THEN-ELSE – W tym przypadku klauzula ELSE jest dodawana dla alternatywnej sekwencji instrukcji.

  • IF-THEN-ELSEIF – Pozwala nam na wykonanie wielu warunków testowych w sekwencji.

IF-THEN Składnia

IF warunek THEN sekwencja_oświadczeń;END IF;

IF-THEN-ELSE Składnia

IF warunek THEN sekwencja_of_if_statements;ELSE sekwencja_of_else_statements;END IF;

IF-THEN-ELSEIF Składnia

IF warunek1 THEN sekwencja_oświadczeń1ELSIF warunek2 THEN sekwencja_oświadczeń2ELSE sekwencja_oświadczeń3END IF;

Teraz, gdy skończyliśmy z instrukcją IF STATEMENT, spójrzmy na instrukcję CASE w PL/SQL.

Stwierdzenie CASE

Instrukcja CASE zasadniczo pomaga w wykonaniu sekwencji instrukcji opartych na selektorze. Selektor w tym przypadku może być dowolny, może to być zmienna, funkcja lub proste wyrażenie. Oto prosty przykład pokazujący składnię instrukcji CASE w PL/SQL.

[<>]CASE [PRAWDA | selektor] KIEDY wyrażenie1 THEN sekwencja_wyrażeń1; KIEDY wyrażenie2 THEN sekwencja_wyrażeń2; ... KIEDY wyrażenieN THEN sekwencja_wyrażeńN; [ELSE sekwencja_wyrażeńN+1;]END CASE [nazwa_etykiety];

W powyższej składni po słowie kluczowym CASE pojawia się selektor. PL/SQL oceni selektor tylko raz, aby określić, która instrukcja ma zostać wykonana.

Po selektorze następuje słowo kluczowe WHEN. Jeśli wyrażenie spełnia wymagania selektora, zostanie wykonana odpowiednia instrukcja po słowie kluczowym THEN.

Teraz, gdy wiemy już, jak możemy użyć instrukcji CASE, spróbujmy zrozumieć, w jaki sposób będziemy używać instrukcji pętli w PL/SQL.

Oświadczenie dotyczące pętli

Instrukcja pętli w PL/SQL jest instrukcją iteracyjną, która umożliwia wielokrotne wykonanie sekwencji instrukcji. Oto prosty przykład pokazujący składnię instrukcji pętli w PL/SQL.

LOOP sekwencja_wyrażeń;END LOOP;

Pomiędzy słowem kluczowym LOOP i END LOOP musi znajdować się co najmniej jedna instrukcja wykonywalna.

Pętla z oświadczeniem EXIT

Instrukcje EXIT i EXIT when umożliwiają 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 kwalifikowania nazwy zmiennej licznika pętli, gdy jest używana w zagnieżdżonej pętli. Poniżej znajduje się składnia etykiety pętli.

<

Teraz, gdy wiemy, jak możemy używać instrukcji pętli, przyjrzyjmy się instrukcji pętli while w celu lepszego zrozumienia.

Podczas wykonywania pętli

Możemy użyć instrukcji pętli WHILE, gdy liczba wykonań nie jest zdefiniowana do momentu rozpoczęcia wykonywania. Poniższa składnia jest używana w instrukcji pętli WHILE w PL/SQL.

WHILE conditionLOOP sekwencja_wyrażeń;END LOOP;

Warunek w składni to wartość logiczna lub wyrażenie, którego wynikiem jest PRAWDA, FAŁSZ lub NULL. Jeśli warunek ma wartość TRUE, instrukcje zostaną wykonane, jeśli jest FALSE, wykonanie zostanie zatrzymane, a sterowanie przejdzie do następnej instrukcji wykonywalnej.

Teraz, gdy wiemy już, jak możemy użyć instrukcji pętli WHILE, przyjrzyjmy się instrukcji pętli FOR.

Oświadczenie 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 do użycia instrukcji pętli FOR w PL/SQL

FOR loop_counter IN [REVERSE] lower_bound .. upper_boundLOOP sekwencja_oświadczeń;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...górna granica to zakres, w którym iteruje pętla. Ponadto musisz mieć co najmniej jedną instrukcję wykonywalną między słowami kluczowymi LOOP i END LOOP.

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 rodzaj błędu jest traktowany jako wyjątek. Wyjątek można traktować jako warunek specjalny, który może zmienić lub zmienić przepływ wykonywania. W PL/SQL istnieją dwa rodzaje wyjątków.

  • Wyjątek systemowy – Jest on wywoływany 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 przed zgłoszeniem. 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;

Więc chodziło 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ą lektur tutaj:Bazy danych Edureka .

Jeśli chcesz wziąć udział w zorganizowanym szkoleniu dotyczącym MySQL, zapoznaj się z naszym Szkoleniem certyfikacyjnym MySQL DBA który jest dostarczany z prowadzonym przez instruktora szkoleniem na żywo i doświadczeniem w rzeczywistych projektach. To szkolenie pomoże ci dogłębnie zrozumieć MySQL i pomoże ci osiągnąć mistrzostwo w tym temacie.

Masz do nas pytanie? Proszę wspomnieć o tym w sekcji komentarzy „Samouczek PL/SQL ” i skontaktuję się z Tobą.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Brak buforowania bazy danych w celu zmniejszenia liczby zduplikowanych zapytań do bazy danych.

  2. Zaawansowany SQL:Wstaw wyjście sparametryzowanej funkcji z wartościami przechowywanymi w tabeli w tabeli SQL

  3. Sterownik ODBC PayPal

  4. Korzystanie z funkcji T-SQL DATEADD, DATEDIFF i DATEPART w prostych terminach

  5. Konfigurowanie Service Broker do przetwarzania asynchronicznego