Oracle PL/SQL Wstaw, zaktualizuj, usuń i wybierz w [Przykład]

W tym samouczku nauczymy się, jak używać SQL w PL/SQLu. SQL jest rzeczywistym komponentem, który zajmuje się pobieraniem i aktualizacją danych w bazie danych, podczas gdy PL/SQL jest komponentem, który przetwarza te dane. W tym artykule omówimy również, jak połączyć SQL w bloku PL/SQL.

Transakcje DML w PL/SQL

DML oznacza Język manipulacji danymi. Te polecenia są używane głównie do wykonywania czynności manipulacyjnych. Zajmuje się poniższymi operacjami.

  • Wstawianie danych
  • Aktualizacja danych
  • Usuwanie danych
  • Wybór danych

W PL/SQL możemy manipulować danymi jedynie za pomocą poleceń SQL.

Wstawianie danych

W PL/SQL możemy wstawić dane do dowolnej tabeli za pomocą polecenia SQL INSERT INTO. To polecenie pobierze nazwę tabeli, kolumnę tabeli i wartości kolumn jako dane wejściowe i wstawi wartość do tabeli podstawowej.

Polecenie INSERT może także pobrać wartości bezpośrednio z innej tabeli przy użyciu instrukcji „SELECT”, zamiast podawać wartości dla każdej kolumny. Za pomocą instrukcji „SELECT” możemy wstawić tyle wierszy, ile zawiera tabela podstawowa.

Składnia:

BEGIN
  INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
     VALUES(<valuel><value2>,...:<value_n>);
END;
  • Powyższa składnia przedstawia polecenie INSERT INTO. Nazwa tabeli i wartości są polami obowiązkowymi, natomiast nazwy kolumn nie są obowiązkowe, jeśli instrukcje wstawiania zawierają wartości dla wszystkich kolumn tabeli.
  • Słowo kluczowe „VALUES” jest obowiązkowe, jeśli wartości podano osobno, jak pokazano powyżej.

Składnia:

BEGIN
  INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
     SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
  • Powyższa składnia przedstawia polecenie INSERT INTO, które pobiera wartości bezpośrednio z pliku za pomocą polecenia WYBIERZ.
  • Słowo kluczowe „VALUES” nie powinno w tym przypadku występować, gdyż wartości nie są podawane osobno.

Aktualizacja danych

Aktualizacja danych oznacza po prostu aktualizację wartości dowolnej kolumny w tabeli. Można to zrobić za pomocą instrukcji „UPDATE”. Ta instrukcja pobiera nazwę tabeli, nazwę kolumny i wartość jako dane wejściowe i aktualizuje dane.

Składnia:

BEGIN	
  UPDATE <table_name>
  SET <columnl>=<VALUE1>,<column2>=<value2>,<column_n>=<value_n> 
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • Powyższa składnia pokazuje UPDATE. Słowo kluczowe „SET” instruuje silnik PL/SQL, aby zaktualizował wartość kolumny o podaną wartość.
  • Klauzula „WHERE” jest opcjonalna. Jeżeli klauzula ta nie zostanie podana, wartość wspomnianej kolumny w całej tabeli zostanie zaktualizowana.

Usuwanie danych

Usunięcie danych oznacza usunięcie jednego pełnego rekordu z tabeli bazy danych. W tym celu służy polecenie „USUŃ”.

Składnia:

BEGIN
  DELETE
  FROM
  <table_name>
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • Powyższa składnia przedstawia polecenie DELETE. Słowo kluczowe „FROM” jest opcjonalne i z klauzulą ​​„FROM” lub bez niej polecenie zachowuje się w ten sam sposób.
  • Klauzula „WHERE” jest opcjonalna. Jeżeli ta klauzula nie zostanie podana, wówczas cała tabela zostanie usunięta.

Wybór danych

Projekcja/pobieranie danych oznacza pobranie wymaganych danych z tabeli bazy danych. Można to osiągnąć za pomocą polecenia „SELECT” z klauzulą ​​„INTO”. Komenda „SELECT” pobierze wartości z bazy danych, a klauzula „INTO” przypisze te wartości do zmiennej lokalnej Blok PL/SQL.

Poniżej znajdują się punkty, które należy uwzględnić w instrukcji „SELECT”.

  • Instrukcja „SELECT” powinna zwrócić tylko jeden rekord podczas korzystania z klauzuli „INTO”, ponieważ jedna zmienna może przechowywać tylko jedną wartość. Jeśli instrukcja „SELECT” zwróci więcej niż jedną wartość, zostanie zgłoszony wyjątek „TOO_MANY_ROWS”.
  • Instrukcja „SELECT” przypisze wartość do zmiennej w klauzuli „INTO”, dlatego aby zapełnić wartość, musi pobrać co najmniej jeden rekord z tabeli. Jeśli nie uzyskano żadnego rekordu, zgłaszany jest wyjątek „NO_DATA_FOUND”.
  • Liczba kolumn i ich typ danych w klauzuli „SELECT” powinna odpowiadać liczbie zmiennych i ich typom danych w klauzuli „INTO”.
  • Wartości są pobierane i wypełniane w tej samej kolejności, jak podano w instrukcji.
  • Klauzula „WHERE” jest opcjonalna i pozwala na większe ograniczenie rekordów, które będą pobierane.
  • Instrukcja „SELECT” może zostać użyta w warunku „WHERE” innych instrukcji DML w celu zdefiniowania wartości warunków.
  • Instrukcja „SELECT” podczas korzystania z instrukcji „INSERT”, „UPDATE”, „DELETE” nie powinna zawierać klauzuli „INTO”, ponieważ w takich przypadkach nie zapełni ona żadnej zmiennej.

Składnia:

BEGIN
  SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> 
   FROM <table_name>
   WHERE <condition to fetch the required records>;
END;
  • Powyższa składnia przedstawia polecenie SELECT-INTO. Obowiązkowe jest słowo kluczowe „FROM”, które określa nazwę tabeli, z której mają zostać pobrane dane.
  • Klauzula „WHERE” jest opcjonalna. Jeżeli klauzula ta nie zostanie podana, wówczas pobrane zostaną dane z całej tabeli.

1 przykład:W tym przykładzie pokażemy, jak wykonywać operacje DML w PL / SQL. Zamierzamy wstawić poniższe cztery rekordy do tabeli emp.

EMP_NAME EMP_NO WYNAGRODZENIE MANAGER
BBB 1000 25000 AAA
XXX 1001 10000 BBB
YYY 1002 10000 BBB
ZZZ 1003 7500 BBB

Następnie zaktualizujemy pensję „XXX” do 15000 i usuniemy rekord pracownika „ZZZ”. Na koniec wyświetlimy szczegóły pracownika „XXX”.

Selekcja danych w PL/SQL

DECLARE
l_emp_name VARCHAR2(250);
l_emp_no NUMBER;
l_salary NUMBER; 
l_manager VARCHAR2(250);
BEGIN	
INSERT INTO emp(emp_name,emp_no,salary,manager) 
VALUES(‘BBB’,1000,25000,’AAA’);
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('XXX',1001,10000,’BBB);
INSERT INTO emp(emp_name,emp_no,salary,managed 
VALUES(‘YYY',1002,10000,'BBB');
INSERT INTO emp(emp_name,emp_no,salary,manager) 
VALUES(‘ZZZ',1003,7500,'BBB'):‭
COMMIT;
Dbms_output.put_line(‘Values Inserted');
UPDATE EMP
SET salary=15000
WHERE emp_name='XXX';
COMMIT;
Dbms_output.put_line(‘Values Updated');
DELETE emp WHERE emp_name='ZZZ';
COMMIT:
Dbms_output.put_line('Values Deleted );
SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX';

Dbms output.put line(‘Employee Detail’);
Dbms_output.put_line(‘Employee Name:‘||l_emp_name);
Dbms_output.put_line(‘Employee Number:‘||l_emp_no);
Dbms_output.put_line(‘Employee Salary:‘||l_salary);
Dbms output.put line(‘Emplovee Manager Name:‘||l_manager):
END;
/

Wyjście:

Values Inserted
Values Updated
Values Deleted
Employee Detail 
Employee Name:XXX 
Employee Number:1001 
Employee Salary:15000 
Employee Manager Name:BBB

Wyjaśnienie kodu:

  • Linia kodu 2-5: Deklarowanie zmiennej.
  • Linia kodu 7-14: Wstawianie rekordów do tabeli emp.
  • Linia kodu 15: Zatwierdzanie transakcji wstawiania.
  • Linia kodu 17-19: Aktualizacja wynagrodzenia pracownika „XXX” do 15000
  • Linia kodu 20: Zatwierdzanie transakcji aktualizacji.
  • Linia kodu 22: Usuwanie rekordu „ZZZ”
  • Linia kodu 23: Zatwierdzenie transakcji usuwania.
  • Linia kodu 25-27: Wybranie rekordu „XXX” i wpisanie zmiennej l_emp_name, l_emp_no, l_salary, l_manager.
  • Linia kodu 28-32: Wyświetlanie wartości pobranych rekordów.

Podsumuj ten post następująco: