Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wprowadzenie do natywnego dynamicznego SQL w bazie danych Oracle

Natywny dynamiczny SQL

Zanim zaczniesz uczyć się natywnego dynamicznego SQL, ważne jest krótkie wprowadzenie. Oracle podarował wszystkim programistom prezent w środku lata w maju 1994 r., wprowadzając koncepcję Dynamic SQL w swojej Bazie danych w wersji 7.1 (aka Oracle 7.1). Dzięki temu programiści mogli pisać dynamiczny SQL za pomocą pakietu „DBMS_SQL”.

Ale stopniowo biblioteka DBMS_SQL zaczęła tracić swój urok. Ze względu na składnie „Nie tak łatwe”, „Powolna wydajność” i „Nieobsługiwane typy zdefiniowane przez użytkownika”. Wszystkie te niedociągnięcia wzbudziły potrzebę czegoś innego. Co może pomóc programistom w pisaniu dobrze zoptymalizowanego kodu bez obciążania ich umysłami.

Oracle nie spieszył się, prawie pięć lat. Wreszcie, wraz z uruchomieniem bazy danych Oracle 8i, a dokładniej Oracle Database w wersji 8.1.5 w lutym 1999 roku, wypuściła ulepszoną wersję Dynamic SQL. Ze względu na swoją stabilną naturę ta ulepszona wersja Dynamic SQL stała się natywną częścią PL/ Język SQL i otrzymał swoją nazwę „Native Dynamic SQL”, dzięki której jest znany już od kilku dni. To jest krótkie wprowadzenie do genezy natywnego dynamicznego SQL w bazie danych Oracle.

Aby zrozumieć natywny dynamiczny SQL, musimy najpierw zrozumieć, czym jest statyczny SQL w bazie danych Oracle?

Co to jest statyczny SQL?

Jak sama nazwa wskazuje, każda instrukcja SQL, która nie zmienia się w czasie wykonywania, nazywana jest statyczną instrukcją SQL.

Zaletą instrukcji Static SQL jest to, że wiemy już, czy wszystkie obiekty zależne, nad którymi piszemy instrukcję, są obecne, czy nie. Kolejną zaletą instrukcji statycznego SQL jest to, że zakodujemy je na stałe w naszej aplikacji. W ten sposób możemy je dostroić w celu uzyskania optymalnej wydajności.

Teraz, gdy dowiedzieliśmy się, czym jest statyczny SQL, zobaczmy, czym jest dynamiczny SQL?

Co to jest natywny dynamiczny SQL?

Jak sama nazwa wskazuje, każda instrukcja SQL tworzona w czasie wykonywania nazywana jest dynamicznym SQL . Te stwierdzenia są budowane w locie. Dlatego nie można ich zakodować na stałe w aplikacji. To z kolei zwiększa ich elastyczność.

Z jednej strony statyczny SQL pozwala na wykonywanie tylko instrukcji DML wewnątrz twojego bloku PL/SQL. Z drugiej strony dynamiczny SQL umożliwia wykonywanie instrukcji DDL, a także wewnątrz bloku PL/SQL. Tak więc, używając dynamicznego SQL, możesz utworzyć tabelę, upuścić indeks lub obciąć tabelę bezpośrednio w bloku PL/SQL. Jest to zaleta natywnego dynamicznego SQL nad statycznym SQL.

Co to jest natywny dynamiczny PL/SQL?

Podobnie jak w przypadku dynamicznego SQL, proces konstruowania kodu PL/SQL w czasie wykonywania nazywa się dynamicznym PL/SQL.

Przyjrzyjmy się teraz zaletom natywnego dynamicznego SQL w porównaniu z pakietem DBMS_SQL w bazie danych Oracle.

Zalety natywnego dynamicznego SQL

  • Łatwe w użyciu kody: W porównaniu do pakietu DBMS_SQL, natywny dynamiczny SQL jest znacznie łatwy w użyciu. Dzieje się tak głównie dlatego, że jest on wbudowany w sam SQL. Jest to równoważne użyciu statycznego SQL w kodzie PL/SQL. Również natywny dynamiczny kod SQL jest bardziej zwarty i czytelny niż pakiet DBMS_SQL. Ten ostatni wymaga dużej ilości kodów ze względu na ścisłe procedury sekwencyjne. To sprawia, że ​​jest to bardziej złożone.
  • Poprawa wydajności kodu: Interpreter PL/SQL ma wbudowaną obsługę natywnego dynamicznego SQL. Dzięki temu programy korzystające z niego są wydajniejsze niż te korzystające z pakietu DBMS_SQL. Zasadniczo natywny dynamiczny SQL łączy etapy przygotowania, wiązania i wykonania w jedną operację. Zmniejsza to narzut procedur i kopiowania danych, co z kolei poprawia wydajność.
  • Obsługa typów zdefiniowanych przez użytkownika: W przeciwieństwie do pakietu DBMS_SQL, natywny dynamiczny SQL obsługuje wszystkie rodzaje typów zdefiniowanych przez użytkownika. Na przykład obiekty zdefiniowane przez użytkownika, REF i kolekcje.
  • Obsługa pobierania do rekordów: Wiersze będące wynikiem zapytania można bezpośrednio pobrać do rekordów PL/SQL przy użyciu natywnego dynamicznego SQL. Nie jest to możliwe z pakietem DBMS_SQL.

Jakie są funkcje Dynamic SQL w bazie danych Oracle?

  1. Po pierwsze, dynamiczny DDL i DML z użyciem dowolnej zmiennej wiązania.
  2. Po drugie, dynamiczne DQL i
  3. Po trzecie, dynamiczny DML korzystający ze znanej listy zmiennych wiązania

Są to trzy funkcje, które Dynamic SQL dodaje do Twojego programowania PL/SQL.

Jak więc używać dynamicznego SQL w bazie danych Oracle?

Dwie najpopularniejsze metody używania dynamicznego SQL i PL/SQL w bazie danych Oracle to:

  1. Wykonaj natychmiastową instrukcję i
  2. Blokuj otwieranie, pobieranie i zamykanie.

Instrukcja Execute Immediate jest używana, gdy zapytanie zwraca dane w jednym wierszu. W przypadku, gdy zapytanie zwraca dane wielowierszowe, możesz skorzystać z bloku Open-For, Fetch and close. W nadchodzących samouczkach dowiemy się szczegółowo o wykonywaniu natychmiastowym i otwieraniu, pobieraniu i zamykaniu.

Czy istnieją inne sposoby korzystania z dynamicznego SQL w bazie danych Oracle?

Oprócz wyżej wymienionych najczęściej używanych metod, inne sposoby wykorzystania dynamicznego SQL lub PL/SQL to

  • Z pobieraniem zbiorczym
  • Po drugie z natychmiastowym wykonaniem zbiorczym
  • Wraz z Bulk FORALL i
  • Ostatnie z wyciągiem Bulk Collect Into

Nauczyliśmy się wszystkich powyższych poleceń i stwierdzeń w poprzedniej serii na temat zbiorczego przetwarzania danych.

Jeśli lubisz uczyć się poprzez samouczek wideo, sprawdź to.

To jest szczegółowe wprowadzenie do natywnego dynamicznego SQL w Oracle Database. Mam nadzieję, że podobało Ci się czytanie. Pamiętaj, aby udostępnić link do tego bloga ze znajomymi w mediach społecznościowych. Pamiętaj też, aby zasubskrybować kanał YouTube, aby śledzić tę serię i dowiedzieć się czegoś nowego i interesującego.

Dzięki i życzę miłego dnia!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. REGEXP_INSTR() Funkcja w Oracle

  2. Wydajne odczytywanie i importowanie plików CSV w Oracle PL/SQL

  3. Instrukcja UPDATE w Oracle przy użyciu SQL lub PL/SQL do aktualizacji TYLKO pierwszego zduplikowanego wiersza

  4. Oracle 10g - optymalizuj GDZIE NIE JEST NULL

  5. ORA-28040:Brak pasującego wyjątku protokołu uwierzytelniania