plsqlRozpoczęcie pracy z plsql


Uwagi

Ta sekcja zawiera przegląd tego, co to jest plsql i dlaczego deweloper może chcieć z niego korzystać.

Powinien również wymieniać wszelkie duże tematy w obrębie PLSQL i link do powiązanych tematów. Ponieważ Dokumentacja dla plsql jest nowa, może być konieczne utworzenie początkowych wersji tych pokrewnych tematów.

O PLSQL

PL / SQL oznacza rozszerzenia języka proceduralnego do SQL. PL / SQL jest dostępny tylko jako „technologia wspomagająca” w innych produktach oprogramowania; nie istnieje jako samodzielny język. PL / SQL można używać w relacyjnej bazie danych Oracle, na serwerze Oracle Server oraz w narzędziach do tworzenia aplikacji po stronie klienta, takich jak Oracle Forms. Oto niektóre ze sposobów używania PL / SQL:

  1. Aby zbudować procedury składowane. .
  2. Aby utworzyć wyzwalacze bazy danych.
  3. Aby zaimplementować logikę po stronie klienta w aplikacji Oracle Forms.
  4. Aby połączyć stronę główną World Wide Web z bazą danych Oracle.

Utwórz tabelę

Poniżej utworzymy tabelę z 3 kolumnami.
Id kolumny musi być wypełniony, więc definiujemy go jako NOT NULL .
W kolumnie Contract dodajemy również czek, aby jedyną dozwoloną wartością było „Y” lub „N”. Jeśli wstawka jest gotowa i ta kolumna nie jest określona podczas wstawiania, wówczas wstawiana jest domyślna „N”.

CREATE TABLE Employee (
        Id            NUMBER NOT NULL,
        Name          VARCHAR2(60),
        Contract      CHAR DEFAULT 'N' NOT NULL,
        ---
        CONSTRAINT p_Id PRIMARY KEY(Id),
        CONSTRAINT c_Contract CHECK (Contract IN('Y','N'))
);
 

Utwórz lub zamień widok

W tym przykładzie utworzymy widok.
Widok jest najczęściej używany jako prosty sposób pobierania danych z wielu tabel.

Przykład 1:
Zobacz z wyborem na jednym stole.

CREATE OR REPLACE VIEW LessonView AS
       SELECT     L.*
       FROM       Lesson L;
 

Przykład 2:
Zobacz z wyborem na wielu stołach.

CREATE OR REPLACE VIEW ClassRoomLessonView AS
       SELECT     C.Id, 
                  C.Name, 
                  L.Subject, 
                  L.Teacher 
       FROM       ClassRoom C, 
                  Lesson L 
       WHERE      C.Id = L.ClassRoomId;
 

Aby wywołać te widoki w zapytaniu, możesz użyć instrukcji select.

SELECT * FROM LessonView;
SELECT * FROM ClassRoomLessonView;
 

Definicja PLSQL

PL / SQL (język proceduralny / język zapytań strukturalnych) to rozszerzenie proceduralne Oracle Corporation dla SQL i relacyjnej bazy danych Oracle. PL / SQL jest dostępny w Oracle Database (od wersji 7), w bazie danych TimesTen w pamięci (od wersji 11.2.1) i IBM DB2 (od wersji 9.7).

Podstawowa jednostka w PL / SQL nazywa się blokiem, który składa się z trzech części: części deklaratywnej, części wykonywalnej i części budującej wyjątki.

DECLARE
   <declarations section>
BEGIN
   <executable command(s)>
EXCEPTION
   <exception handling>
END;
 

Deklaracje - ta sekcja zaczyna się od słowa kluczowego DECLARE. Jest to sekcja opcjonalna i definiuje wszystkie zmienne, kursory, podprogramy i inne elementy do wykorzystania w programie.

Polecenia wykonywalne - sekcja ta jest zawarta między słowami kluczowymi BEGIN i END i jest sekcją obowiązkową. Składa się z wykonywalnych instrukcji PL / SQL programu. Powinien mieć co najmniej jeden wykonywalny wiersz kodu, który może być tylko poleceniem NULL wskazującym, że nic nie powinno zostać wykonane.

Obsługa wyjątków - ta sekcja zaczyna się słowem kluczowym EXCEPTION. Ta sekcja jest ponownie opcjonalna i zawiera wyjątki, które obsługują błędy w programie.

Każda instrukcja PL / SQL kończy się średnikiem (;). Bloki PL / SQL można zagnieżdżać w innych blokach PL / SQL za pomocą BEGIN i END.

W bloku anonimowym wymagana jest tylko wykonywalna część bloku, inne części nie są konieczne. Poniżej znajduje się przykład prostego anonimowego kodu, który nie robi nic, ale działa bez zgłaszania błędów.

BEGIN
    NULL;
END;
/ 
 

Brak instrukcji wykonalnej prowadzi do błędu, ponieważ PL / SQL nie obsługuje pustych bloków. Na przykład wykonanie kodu poniżej prowadzi do błędu:

BEGIN
END;
/ 
 

Aplikacja zgłosi błąd:

END;
*
ERROR at line 2:
ORA-06550: line 2, column 1:
PLS-00103: Encountered the symbol "END" when expecting one of the following:
( begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
continue close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe purge
 

Symbol „*” w wierszu poniżej słowa kluczowego „END;” oznacza, że blok, który kończy się tym blokiem, jest pusty lub źle zbudowany. Każdy blok wykonawczy wymaga instrukcji, nawet jeśli nic nie robi, jak w naszym przykładzie.

Różnica między% TYPE i% ROWTYPE.

%TYPE : Służy do deklarowania pola tego samego typu, co kolumna określonej tabeli.

DECLARE
        vEmployeeName   Employee.Name%TYPE;
BEGIN
        SELECT Name 
        INTO   vEmployeeName
        FROM   Employee
        WHERE  RowNum = 1;
        
        DBMS_OUTPUT.PUT_LINE(vEmployeeName);
END;
/
 

% ROWTYPE: Służy do deklarowania rekordu tego samego typu, jaki znajduje się w określonej tabeli, widoku lub kursorze (= wiele kolumn).

DECLARE
        rEmployee     Employee%ROWTYPE;
BEGIN
        rEmployee.Name := 'Matt';
        rEmployee.Age := 31;
        
        DBMS_OUTPUT.PUT_LINE(rEmployee.Name);
        DBMS_OUTPUT.PUT_LINE(rEmployee.Age);
END;
/
 

Witaj świecie

set serveroutput on

DECLARE
   message constant varchar2(32767):= 'Hello, World!';
BEGIN
   dbms_output.put_line(message);
END;
/
 

set serveroutput on jest wymagany w klientach SQL * Plus i SQL Developer, aby umożliwić wyjście dbms_output . Bez polecenia nic nie jest wyświetlane.

end; linia sygnalizuje koniec anonimowego bloku PL / SQL. Aby uruchomić kod z wiersza poleceń SQL, może być konieczne wpisanie / na początku pierwszego pustego wiersza po ostatnim wierszu kodu. Po wykonaniu powyższego kodu w wierszu polecenia SQL powstaje następujący wynik:

Hello, World!

PL/SQL procedure successfully completed.