Co To jest dynamiczny SQL?

Dynamic SQL jest metodologią programowania służącą do generowania i uruchamiania instrukcji w czasie wykonywania. Jest on używany głównie do pisania programów ogólnego przeznaczenia i elastycznych, w których instrukcje SQL będą tworzone i wykonywane w czasie wykonywania w oparciu o wymagania.,

w tym samouczku dowiesz się-

  • sposoby zapisu dynamicznego SQL
  • NDS (natywny dynamiczny SQL) – wykonaj natychmiast
  • DBMS_SQL dla dynamicznego SQL

sposoby zapisu dynamicznego SQL

PL/SQL zapewnia dwa sposoby zapisu dynamicznego SQL

  1. NDS – natywny dynamiczny SQL
  2. dbms_sql

NDS (native Dynamic SQL) – uruchamianie natychmiastowe

native Dynamic SQL jest łatwiejszym sposobem zapisu dynamicznego SQL. Używa polecenia „wykonaj natychmiast” do tworzenia i wykonywania SQL w czasie wykonywania., Aby jednak skorzystać z tego sposobu, należy wcześniej znać typ danych i liczbę zmiennych, które mają być użyte w czasie wykonywania. Zapewnia również lepszą wydajność i mniejszą złożoność w porównaniu z DBMS_SQL.

składnia

EXECUTE IMMEDIATE(<SQL>)
  • powyższa składnia pokazuje polecenie Wykonaj natychmiast.
  • Klauzula INTO jest opcjonalna i używana tylko wtedy, gdy dynamiczny SQL zawiera instrukcję select pobierającą wartości. Typ zmiennej powinien odpowiadać typowi zmiennej instrukcji select.,
  • użycie klauzuli

  • jest opcjonalne i używane tylko wtedy, gdy dynamiczny SQL zawiera dowolną zmienną bind.

przykład 1: w tym przykładzie pobierzemy dane z tabeli EMP dla emp_no '1001′ używając instrukcji NDS.

Wyjście

Employee Name : XXX Employee Number: 1001 Salary: 15000 Manager ED: 1000

Wyjaśnienie kodu:

DBMS_SQL dla dynamicznego SQL

PL/SQL dostarcza pakiet DBMS_SQL pozwala to na pracę z dynamicznym SQL. Proces tworzenia i wykonywania dynamicznego SQL zawiera następujący proces.,

  • otwórz kursor: dynamiczny SQL uruchomi się w taki sam sposób jak kursor. Aby więc wykonać polecenie SQL, musimy otworzyć kursor.
  • PARSE SQL: następnym krokiem jest analiza dynamicznego SQL. Ten proces po prostu sprawdzi składnię i utrzyma zapytanie gotowe do wykonania.
  • wartości zmiennej BIND: następnym krokiem jest przypisanie wartości dla zmiennych bind, jeśli istnieją.
  • DEFINE COLUMN: następnym krokiem jest zdefiniowanie kolumny przy użyciu ich względnych pozycji w instrukcji select.
  • EXECUTE: następnym krokiem jest wykonanie przetworzonego zapytania.,
  • FETCH VALUES: następnym krokiem jest pobranie wykonanych wartości.
  • Zamknij kursor: po pobraniu wyników kursor powinien zostać zamknięty.

przykład 1: w tym przykładzie pobierzemy dane z tabeli EMP dla emp_no '1001′ używając instrukcji DBMS_SQL.

Wyjście

Employee Name:XXX Employee Number:1001 Salary:15000 Manager ID:1000

Wyjaśnienie kodu:

  • wiersz kodu 1-9: deklaracja zmiennej.,
  • linia kodu 10: kadrowanie instrukcji SQL.
  • linia kodu 11: otwarcie kursora za pomocą DBMS_SQL.OPEN_CURSOR. Zwróci on otwarty identyfikator kursora.
  • linia kodu 12: Po otwarciu kursora jest przetwarzany SQL.
  • linia kodu 13: zmienna Bind '1001′ przypisuje ID kursora zamiast': empno'.
  • linia kodu 14-17: Definiowanie nazwy kolumny na podstawie ich względnej pozycji w instrukcji SQL. W naszym przypadku względne stanowisko to (1) emp_name, (2) emp_no (3) pensja (4) menedżer. Na podstawie tej pozycji definiujemy zmienną docelową.,
  • linia kodu 18: wykonanie zapytania przy użyciu DBMS_SQL.Wykonać. Zwraca liczbę przetworzonych rekordów.
  • linia kodu 19-33: pobieranie rekordów za pomocą pętli i wyświetlanie tego samego.
  • linia kodu 20: DBMS_SQL.FETCH_ROWS pobierze jeden rekord z przetwarzanych wierszy. Można go wywoływać wielokrotnie, aby pobrać wszystkie wiersze. Jeśli nie może pobrać wierszy, zwróci 0, tym samym zamykając pętlę.

podsumowanie

w tej sekcji omówiliśmy dynamiczny SQL i sposoby wykonywania dynamicznego SQL., Widzieliśmy również różne kroki w wykonywaniu dynamicznego SQL w oba sposoby. Widzieliśmy również przykłady, w których ten sam scenariusz jest obsługiwany zarówno w NDS, jak i DBMS_SQL, aby wykonać wykonanie w czasie wykonywania.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *