Różnica między jawnym kursorem a niejawnym kursorem

Jawny kursor a niejawny kursor

Jeśli chodzi o bazy danych, kursor jest strukturą kontrolną, która umożliwia przechodzenie przez rekordy w bazie danych. Kursor zapewnia mechanizm przypisywania nazwy do instrukcji SQL select, a następnie można jej użyć do manipulowania informacjami w tej instrukcji SQL. Ukryte kursory są tworzone automatycznie i używane za każdym razem, gdy instrukcja Select jest wydawana w języku PL / SQL, gdy nie ma jawnie zdefiniowanego kursora. Jawne kursory, jak sama nazwa wskazuje, są wyraźnie zdefiniowane przez programistę. W języku PL / SQL jawny kursor jest tak naprawdę nazwanym zapytaniem zdefiniowanym za pomocą kursora słowa kluczowego.

Co to jest domniemany kursor?

Ukryte kursory są automatycznie tworzone i wykorzystywane przez Oracle za każdym razem, gdy wydawana jest instrukcja select. Jeśli używany jest niejawny kursor, system zarządzania bazą danych (DBMS) automatycznie wykona operacje otwierania, pobierania i zamykania. Kursorów niejawnych należy używać tylko z instrukcjami SQL, które zwracają pojedynczy wiersz. Jeśli instrukcja SQL zwraca więcej niż jeden wiersz, użycie niejawnego kursora spowoduje błąd. Ukryty kursor jest automatycznie kojarzony z każdą instrukcją DML (Data Manipulation Language), a mianowicie INSERT, UPDATE i DELETE. Ponadto niejawny kursor służy do przetwarzania instrukcji SELECT INTO. Podczas pobierania danych za pomocą niejawnych kursorów można zgłosić wyjątek NO_DATA_FOUND, gdy instrukcja SQL nie zwraca danych. Ponadto niejawne kursory mogą zgłaszać wyjątki TOO_MANY_ROWS, gdy instrukcja SQL zwraca więcej niż jeden wiersz.

Co to jest wyraźny kursor?

Jak wspomniano wcześniej, kursory jawne to zapytania zdefiniowane przy użyciu nazwy. Wyraźny kursor można traktować jako wskaźnik do zestawu rekordów, a wskaźnik można przesuwać do przodu w obrębie zestawu rekordów. Jawne kursory zapewniają użytkownikowi pełną kontrolę nad otwieraniem, zamykaniem i pobieraniem danych. Ponadto wiele wierszy można pobrać za pomocą wyraźnego kursora. Jawne kursory mogą również przyjmować parametry tak jak każda funkcja lub procedura, dzięki czemu zmienne w kursorze można zmieniać za każdym razem, gdy są wykonywane. Ponadto wyraźne kursory pozwalają pobrać cały wiersz do zmiennej rekordu PL / SQL. Podczas korzystania z wyraźnego kursora należy go najpierw zadeklarować za pomocą nazwy. Do atrybutów kursora można uzyskać dostęp za pomocą nazwy nadanej kursorowi. Po zadeklarowaniu najpierw należy otworzyć kursor. Następnie można rozpocząć pobieranie. Jeśli trzeba pobrać wiele wierszy, operację pobierania należy wykonać w pętli. Na koniec kursor musi zostać zamknięty.

Różnica między jawnym kursorem a niejawnym kursorem

Główną różnicą między niejawnym kursorem a kursorem jawnym jest to, że jawny kursor musi być jawnie zdefiniowany przez podanie nazwy, podczas gdy niejawne kursory są tworzone automatycznie po wydaniu instrukcji select. Ponadto wiele wierszy można pobrać za pomocą jawnych kursorów, podczas gdy niejawne kursory mogą pobrać tylko jeden wiersz. Również wyjątki NO_DATA_FOUND i TOO_MANY_ROWS nie są zgłaszane podczas używania jawnych kursorów, w przeciwieństwie do domyślnych kursorów. Zasadniczo niejawne kursory są bardziej podatne na błędy danych i zapewniają mniejszą kontrolę programową niż wyraźne kursory. Również niejawne kursory są uważane za mniej wydajne niż kursory jawne.