Oracle PL / SQL kursor: implicitni, eksplicitni, kursor FOR Loop (primjer)

Sadržaj:

Anonim

Što je KURSOR u PL / SQL-u?

Pokazivač je pokazivač na ovo kontekstno područje. Oracle stvara područje konteksta za obradu SQL izraza koji sadrži sve informacije o izrazu.

PL / SQL omogućuje programeru da kontrolira područje konteksta kroz kursor. Kursor sadrži retke koje vraća SQL izraz. Skup redaka koji kursor drži naziva se aktivnim skupom. Ovi se pokazivači također mogu imenovati tako da se na njih može uputiti s drugog mjesta koda.

U ovom vodiču naučit ćete-

  • Implicitni pokazivač
  • Eksplicitni pokazivač
  • Atributi kursora
  • ZA Izjavu kursora petlje

Kursor je dvije vrste.

  • Implicitni pokazivač
  • Eksplicitni pokazivač

Implicitni pokazivač

Kad god se u bazi podataka pojave bilo kakve DML operacije, stvara se implicitni kursor koji sadrži pogođene retke u toj određenoj operaciji. Ti se kursori ne mogu imenovati i, prema tome, ne mogu se kontrolirati ili uputiti s drugog mjesta koda. Možemo se pozivati ​​samo na najnoviji kursor kroz atribute kursora.

Eksplicitni pokazivač

Programerima je omogućeno stvaranje imenovanog kontekstnog područja za izvršavanje njihovih DML operacija kako bi dobili veću kontrolu nad njim. Eksplicitni kursor trebao bi biti definiran u odjeljku deklaracije bloka PL / SQL i stvoren je za izraz 'SELECT' koji treba koristiti u kodu.

Ispod su koraci koji uključuju rad s eksplicitnim kursorima.

  • Izjava kursora

    Deklaracija kursora jednostavno znači stvoriti jedno imenovano područje konteksta za izraz 'SELECT' koji je definiran u dijelu deklaracije. Naziv ovog kontekstnog područja jednak je nazivu kursora.

  • Otvaranje kursora

    Otvaranje kursora uputit će PL / SQL da dodijeli memoriju za ovaj kursor. Kursor će biti spreman za dohvaćanje zapisa.

  • Dohvaćanje podataka iz pokazivača

    U ovom se postupku izvršava naredba 'SELECT' i dohvaćeni se retci pohranjuju u dodijeljenu memoriju. Oni se sada nazivaju aktivnim skupovima. Dohvaćanje podataka iz kursora aktivnost je na razini zapisa koja znači da im možemo pristupiti na način evidencije.

    Svaka naredba dohvaćanja dohvatit će jedan aktivni skup i sadrži podatke tog određenog zapisa. Ova je izjava jednaka naredbi 'SELECT' koja dohvaća zapis i dodjeljuje varijabli u klauzuli 'INTO', ali neće izuzeti.

  • Zatvaranje kursora

    Nakon što se sada dohvati sav zapis, trebamo zatvoriti kursor tako da se oslobodi memorija dodijeljena ovom kontekstnom području.

Sintaksa:

DECLARECURSOR  IS ;BEGINFOR I IN LOOP… END LOOP;END;
  • U gornjoj sintaksi, dio deklaracije sadrži deklaraciju kursora.
  • Kursor se kreira za izraz 'SELECT' koji je dan u deklaraciji kursora.
  • U izvršnom dijelu, deklarirani kursor je postavljen u FOR petlju, a varijabla petlje 'I' u ovom će se slučaju ponašati kao varijabla kursora.

Primjer 1 : U ovom ćemo primjeru projicirati cijelo ime zaposlenika iz emp tablice pomoću petlje kursora-FOR.

DECLARECURSOR guru99_det IS SELECT emp_name FROM emp;BEGINFOR lv_emp_name IN guru99_detLOOPDbms_output.put_line(‘Employee Fetched:‘||lv_emp_name.emp_name);END LOOP;END;/

Izlaz

Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY

Objašnjenje koda:

  • Redak koda 2 : Deklariranje kursora guru99_det za izraz "SELECT emp_name FROM emp".
  • Redak koda 4 : Konstruiranje petlje 'FOR' za kursor s varijablom petlje lv_emp_name.
  • Redak koda 5: Ispis imena zaposlenika u svakoj iteraciji petlje.
  • Redak koda 8: Izađite iz petlje

Napomena: U petlji Cursor-FOR atributi kursora ne mogu se koristiti jer se otvaranje, dohvaćanje i zatvaranje kursora implicitno vrši pomoću petlje FOR.