Co to jest i jak działa kursor w bazie danych?

  Рет қаралды 9,345

nieinformatyk

nieinformatyk

Күн бұрын

Kursor w bazie danych jest nieodłączną częścią programowania aplikacji w bazie danych. Z tego nagrania dowiesz się czym jest kursor, po co i w jaki sposób go używać. Oczywiście napiszemy też kilka mniejszych programów PL/SQL.
Zapraszam do oglądania.
== Przydatne linki z nagrania:==
Instalacja bazy danych: • Administracja baz dany...
Zapis na newsletter PL/SQL: nieinformatyk.pl/strona/plsql...
Pętle kursorowe: blogs.oracle.com/oraclemagazi...
== Polecam obejrzeć:==
1. wstęp do PL/SQL: • Kurs PL/SQL 2: Wstęp d...
2. wyzwalacz w bazie Oracle: • Kurs PLSQL3: Co to jes...
==Plan odcinka:==
00:00 start
00:08 wprowadzenie do odcinka
01:00 co to jest kursor?
02:42 kiedy używać kursorów?
04:47 atrybuty kursorowe
05:13 przykłady wykorzystania zmiennych kursorowych
08:35 proces korzystania z kursora
09:21 przykład tworzenia kursora jawnego
13:28 zaleta kursora: obsługa no_data_found
15:20 zaleta kursora: obsługa too_many_rows
18:31 zaleta kursora: kontrola nad każdym rekordem
21:55 zaleta kursora: znajdowanie błędów
24:52 zakończenie odcinka
#bazodanowiec #plsql #programowanie
==Poznaj mniej lepiej:==
Zapisy na kurs: www.nieinformatyk.pl/
Kod z odcinka: www.nieinformatyk.pl/pliki
Facebook: / nieinformatyk
Linkedin: / darekbutkiewicz
Instagram: / nieinformatyk
Twitter: / nieinformatyk
Zasubskrybuj mój kanał: kzfaq.info...
Witaj na moim kanale :)
Jestem programistą baz danych Oracle oraz developerem hurtownii danych (ETL). W tym miejscu dzielę się z oglądającymi wiedzą dotyczącą relacyjnych baz danych, praktycznych technik pisania SQL oraz optymalizacji kodu PL/SQL. Jeśli chcesz zdobyć praktyczną i rzetelną więdzę o bazach danych to trafiłeś na właściwe miejsce.
Więcej informacji o baza danych znajdziesz zupełnie ZA DARMO na www.nieinformatyk.pl

Пікірлер: 50
@merktor2090
@merktor2090 3 жыл бұрын
Dzięki za kolejny odcinek.
@Merryler
@Merryler 3 жыл бұрын
Bardzo ładnie opisane :)
@nieinformatyk
@nieinformatyk 3 жыл бұрын
dziękuję, cieszę się, że widzisz tu wartość :)
@kevinautret2356
@kevinautret2356 3 жыл бұрын
Hej :D fajny materiał ;) dzięki
@nieinformatyk
@nieinformatyk 3 жыл бұрын
proszę bardzo :)
@MrRodiego
@MrRodiego 3 жыл бұрын
Świetna lekcja!
@nieinformatyk
@nieinformatyk 3 жыл бұрын
dzięki :)
@laspalmas2882
@laspalmas2882 3 жыл бұрын
Super odcinek, ja chętnie obejrzę odcinek o pętlach. Chętnie też bym zobaczył odcinek o formach oracle.
@nieinformatyk
@nieinformatyk 3 жыл бұрын
Dzięki za propozycję, zapisałem do listy tematów :)
@nieinformatyk
@nieinformatyk 3 жыл бұрын
Hej, Proponowałeś materiał na temat pętli. Właśnie go dla Ciebie nagrałem. Daj znać czy Ci się podoba :) kzfaq.info/get/bejne/eZ2EZLJ7uqitn5c.html
@laspalmas2882
@laspalmas2882 3 жыл бұрын
@@nieinformatyk super
@TO-mg5tn
@TO-mg5tn 3 жыл бұрын
Świetnie i przede wszystkim prosto wytłumaczone, to może jeszcze pętla kursorowa jako uzupełnienie.
@nieinformatyk
@nieinformatyk 3 жыл бұрын
cieszę się, że odcinek Ci się spodobał :)
@wildgorilla1205
@wildgorilla1205 4 ай бұрын
dzieki!
@nieinformatyk
@nieinformatyk 4 ай бұрын
proszę bardzo :)
@maciekssj
@maciekssj 3 жыл бұрын
Dobry odcinek, dużo kodu :)
@nieinformatyk
@nieinformatyk 3 жыл бұрын
dzięki za feedback - jeszcze nie zawsze czuje, jaki sposób prezentacji najbardziej się spodoba :)
@cnsr
@cnsr 3 жыл бұрын
O, i tu jest mięso. Brakowalo mi takich tresci ostatnio. Zostawiam email.
@nieinformatyk
@nieinformatyk 3 жыл бұрын
Cieszę się, że Ci się podobało. Na której stronie zostawiłeś e-mail? Jeśli interesuje Cię PL/SQL to tutaj mam coś ciekawego: nieinformatyk.pl/strona/plsql-bonus,430
@cnsr
@cnsr 3 жыл бұрын
@@nieinformatyk Tak, skorzystałem z tego linka, ale dopiero teraz potwierdziłem udzial w linku aktywacyjnym. Powinno byc ok.
@nieinformatyk
@nieinformatyk 3 жыл бұрын
@@cnsr Tak, już jesteś w systemie :)
@cnsr
@cnsr 3 жыл бұрын
Ok, zostawiam ankietę. Pozdr.
@nuvii0746
@nuvii0746 3 жыл бұрын
Słuchałem z ciekawością :) Będzie coś o Oracle forms builder?
@nieinformatyk
@nieinformatyk 3 жыл бұрын
Na ten moment nie. Nie korzystałem z tego narzędzia. Ale są jakieś książki na ten temat: helion.pl/ksiazki/oracle-form-builder-michal-widera,oracfb.htm#format/d :)
@norbertskrobert8532
@norbertskrobert8532 Жыл бұрын
hej, nie jestem pewien czy już było, ale prosisz o pomysły. Automatyzacja backupów, distaster recovery.
@nieinformatyk
@nieinformatyk Жыл бұрын
Dzięki, trochę nie moja działka, bo nie jestem administratorem.
@tomaszskrzypczak1077
@tomaszskrzypczak1077 3 жыл бұрын
Czy w około 15 min przy instrukcji if przed return nie powinna być instrukcja close c1? Jeśli ten kod był by uruchamiany wiele razy to może to doprowadzić do błędu ORA-01000 przekroczono liczbę otwartych kursorów...
@nieinformatyk
@nieinformatyk 3 жыл бұрын
Tak, masz rację. Dodatkowo w przypadku korzystania z kursorów warto je otwierać jedynie, gdy są zamknięte(opcja open c1 też może wygenerować błąd) oraz zamykać je po wystąpieniu jakiegokolwiek błędu(w sekcji exception każda sekcja musi się kończyć close cursor). Nie chciałem jednak wprowadzać dodatkowych zagadnień(o czym wspominam na końcu nagrania), więc kilka kwestii pominąłem.
@PawePab
@PawePab 4 ай бұрын
Cześć, podczas usuwania rekordu (wcześniej zapisanego do bazy i skomitowanego) wyświetlany jest bład informujący o podrzędnej tabeli zgodnie z nałożonym FK łączącym z tabelą departamenty. Jak zatem poprawnie postąpić aby usunąć rekord posiadający FK ?
@nieinformatyk
@nieinformatyk 4 ай бұрын
Najpierw usuń rekord podrzędny - to najprostszy sposób. Najlepiej zrób to w jednej transakcji :)
@Lapikize
@Lapikize 3 жыл бұрын
Dobrze byłoby zrobić zoom na kod. Jest mnóstwo zmarnowanej białej przestrzeni na ekranie. Fajnej lekcji nie da się oglądać na podręcznym tablecie.
@nieinformatyk
@nieinformatyk 3 жыл бұрын
Dzięki za komentarz, nie pomyślałem o tym obrabiając odcinek, bo sam korzystam z 27''. W kolejnych lekcjach to poprawię :)
@exztaza
@exztaza Жыл бұрын
czy można jakoś zdobyć ten newsletter ? czy jest on również dla świeżych newsletterowiczów ;]
@nieinformatyk
@nieinformatyk Жыл бұрын
Co tydzień wysyłam najświeższe informacje, więc nie są one zakolejkowane i już "przepadły" :) Ale żeby nie stracić kolejnych newsletterów zapraszam na: nieinformatyk.pl/
@MeggaFelipe
@MeggaFelipe 3 жыл бұрын
#zasieg
@nieinformatyk
@nieinformatyk 3 жыл бұрын
dzięki :)
@akczenaiwok
@akczenaiwok 3 жыл бұрын
poprawcie mnie jeśli się mylę, ale jeśli w kursorze -- kursor jawny SET SERVEROUTPUT ON; DECLARE CURSOR c1 IS SELECT * FROM departments2; v_result departments2%rowtype; BEGIN OPEN c1; LOOP FETCH c1 INTO v_result; BEGIN UPDATE departments2 SET department_name = department_name||'XXXXXXXXXXXXXXXXX' WHERE department_id = v_result.department_id; EXCEPTION WHEN OTHERS THEN NULL; END; EXIT WHEN c1%NOTFOUND; END LOOP; CLOSE c1; END; / nie zawrzemy na końcu "frazy" (nie wiem jak na to mówić) "exit when c1%notfound" to baza będzie w nieskończoność aż do zapełnienia pamięci apdejtować nazwę dla ostatniego znalezionego rekordu z selecta ? wykonałem takie zapytanie i "kręci się" już kilka minut, zastanawiam się co system teraz robi.
@nieinformatyk
@nieinformatyk 3 жыл бұрын
program kręci się w kółko - instrukcja FETCH nie zwraca błędu NO_DATA_FOUND. Bez EXIT WHEN.. stworzyłeś pętlę nieskończoną. Innymi słowy program ciągle wykonuje instrukcje między LOOP a END LOOP. A te instrukcje nic nie robią, bo nie ma już żadnych danych do zwrócenia z kursora
@grzegorzko55
@grzegorzko55 3 жыл бұрын
A jak wyświetlić liczbę zwróconych wierszy tylko z polecenia select?
@nieinformatyk
@nieinformatyk 3 жыл бұрын
Moduł 7 Lekcja 4: nieinformatyk.pl/kurs/1760/programowanie-plsql użyj SQL%ROWCOUNT
@grzegorzko55
@grzegorzko55 3 жыл бұрын
@@nieinformatyk Próbowałem ,ale działa tylko dla update.
@nieinformatyk
@nieinformatyk 3 жыл бұрын
@@grzegorzko55 działa dla każdego kursora - w tym SELECT. Zawsze możesz zdefiniować kursor jawny i wtedy odwołać się nazwa_kursora%ROWTYPE
@grzegorzko55
@grzegorzko55 3 жыл бұрын
@@nieinformatyk Ok,działa dzięki za podpowiedzi
@grzegorzko55
@grzegorzko55 3 жыл бұрын
@@nieinformatyk a co dokładnie oznacza ten rowtype ?Bo jak napisałem 1 część kursora z materiału jescze bez update i chciałem wyświetlić v_result department2%rowtype to pojawił się bląd
@arekj199576
@arekj199576 Ай бұрын
20:20 I co tutaj daje ten kursor? W zwykłym selekcie mogę ustawić id konkretnych departamentów, ale mówisz, że czasami możemy chcieć updateować np. 2,5,7 ok. Ale w czym pomaga nam kursor skoro wybrałeś 5 pierwszych (i na marginesie, w czym to jest lepsze niż select top5?)? 7 nie zostanie powiększony, a 1,3,4 zostaną niepotrzebnie. W jaki sposób kursor ma tu pomagać? W jaki sposób ma pomóc w wyborze konkretnych rekordów?
@nieinformatyk
@nieinformatyk Ай бұрын
Kursor używa się z kilku różnych powodów - najczęstszym jest potrzeba by wielokrotnie w jednym programie wykonywać ten sam SELECT. Wtedy otwieramy go 2 razy, ale deklaracja jest tylko jedna. Przykład w nagraniu jest uproszczony. Mówiąc, że możesz updatować wybrane rekordy chodziło mi o to, że czasem istnieje logika, że to czy updatujesz dany rekord zależy od wyniku jakieś kalkulacji na poprzednim rekordzie, np. rekord o id=2 updatujesz jeśli dla rekordu o id=1 udało/nieudało Ci się znaleźć danych w innej tabeli. TOP5 nic Ci tu nie da, bo wybierzesz 5 losowych rekordów. Druga zaletą kursora jest więc kontrola nad przetwarzaniem danych rekord po rekordzie.
@Tomasz200010
@Tomasz200010 Жыл бұрын
Ja mam tak: fetch c1 into l_DEPARTAMENTS; exit when c1%NOTFOUND; DBMS_OUTPUT.PUT_LINE(l_DEPARTAMENTS.DEPARTMENT_NAME); a jednak zwraca wartosci bez powtorki. Ciekawe czemu.
@MeggaFelipe
@MeggaFelipe Жыл бұрын
#zasieg2 Ps. Tu już się grubo robi ;d
@nieinformatyk
@nieinformatyk Жыл бұрын
#dzięki :)
Co to jest procedura PL/SQL i jak ją wywołać?
14:13
nieinformatyk
Рет қаралды 11 М.
Kurs PL/SQL 1: Paradoks Monty Halla.
35:25
nieinformatyk
Рет қаралды 18 М.
Best KFC Homemade For My Son #cooking #shorts
00:58
BANKII
Рет қаралды 59 МЛН
Gym belt !! 😂😂  @kauermtt
00:10
Tibo InShape
Рет қаралды 14 МЛН
Kurs PL/SQL 2: Wstęp do języka programowania PL/SQL
23:26
nieinformatyk
Рет қаралды 10 М.
Poziomy izolacji sql - wyjaśnienie dla laika + przykłady
27:36
nieinformatyk
Рет қаралды 3,7 М.
Na czym polega normalizacja w bazach danych? #65
12:55
nieinformatyk
Рет қаралды 24 М.
Co to jest relacyjna baza danych? Model relacyjny danych od podstaw
16:11
Опасность фирменной зарядки Apple
0:57
SuperCrastan
Рет қаралды 3,2 МЛН
$1 vs $100,000 Slow Motion Camera!
0:44
Hafu Go
Рет қаралды 27 МЛН
Kumanda İle Bilgisayarı Yönetmek #shorts
0:29
Osman Kabadayı
Рет қаралды 1,2 МЛН