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
- NDS – natywny dynamiczny SQL
- 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.,
- jest opcjonalne i używane tylko wtedy, gdy dynamiczny SQL zawiera dowolną zmienną bind.
użycie klauzuli
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.