sql >> Database teknologi >  >> RDS >> Database

Hvad er en markør i SQL, og hvordan implementerer man den?

Markører i SQL udgør en integreret del af enhver database, som grundlæggende hjælper en bruger med at krydse databasen uden meget besvær. Gennem denne artikel om Markør i SQL vil jeg give dig alle de nødvendige detaljer, som du skal have brug for, før du får dine fødder våde med det.

Herunder er de emner, jeg vil diskutere i denne artikel:

  • Hvad er markør i SQL?
  • Typer af SQL-markører
  • Syntaks for en SQL-markør
  • Markørlivscyklus

Hvad er markør i SQL?

Markør i SQL er et objekt, som tillader krydsning over rækkerne i ethvert resultatsæt. Med dette kan du behandle en individuel række i en database, der returneres af en forespørgsel. Det er et midlertidigt arbejdsområde eller kontekstområde, der oprettes i hukommelsessystemet under udførelsen af ​​en SQL-sætning, som gemmer de hentede data fra databasen og hjælper med at manipulere dem. Du kan betragte det som et arrangement af rækker sammen med en markør, der peger på den nuværende række. En markør er et databaseobjekt, som kan indeholde mere end én række, men det kan kun behandle én række ad gangen. Sættet af rækker, der holdes af en markør, er kendt som en aktiv sæt. Således kan du kontrollere registreringen af ​​en tabel i en singleton-teknik, dvs. en række på ethvert tidspunkt.

Nu hvor du er bekendt med, hvad der er en markør i SQL, lad os nu gå videre og tage et kig på dens forskellige typer.

SQL-markørtyper

SQL giver to typer markører, som jeg har angivet nedenfor:

  1. Implicit markør

Når DML-operationer såsom INSERT, UPDATE og DELETE behandles i databasen, genereres implicitte markører automatisk og bruges af frameworket. Disse typer markører bruges til intern behandling og kan ikke kontrolleres eller henvises fra et andet kodeområde. Implicitte markører i SQL holder bare de berørte rækker af operationen og kan kun henvise til den seneste markør ved hjælp af markørattributterne, som er vist nedenfor i tabellen.

Attribut Beskrivelse
%FOUND Det vil returnere TRUE, hvis en INSERT-, UPDATE- eller DELETE-sætning påvirker en eller flere rækker, eller en SELECT INTO-sætning returnerer en eller flere rækker. I andre tilfælde vil det returnere FALSK.
%NOTFOUND Det er teknisk set det modsatte af %FOUND-attributten. Det returnerer TRUE, hvis en INSERT-, UPDATE- eller DELETE-sætning ikke påvirker nogen rækker, eller en SELECT INTO-sætning returnerer ingen rækker. Ellers returnerer den bare FALSK.
%ISOPEN Denne attribut returnerer altid FALSE for implicitte markører, da SQL-markøren automatisk lukkes umiddelbart efter, at den tilknyttede SQL-sætning er udført.
%ROWCOUNT Det returnerer det samlede antal berørte rækker med en INSERT-, UPDATE- eller DELETE-sætning, eller rækkerne returneret af en SELECT INTO-sætning.
  1. Eksplicit markør

Denne type markør genereres hver gang data behandles af en bruger gennem en SQL-blok. Generelt udløser brugen af ​​SELECT-forespørgslen oprettelsen af ​​en eksplicit markør og kan indeholde mere end én række, men kun behandle én ad gangen. Denne type markør bruges til at holde posterne i en kolonne. Dette giver programmørerne mulighed for at oprette et navngivet kontekstområde til at udføre deres DML-operationer for bedre kontrol. Den skal også defineres i SQL-blokken og oprettes igen til en SELECT-forespørgsel ved hjælp af denne kode.

For at få en bedre forståelse af en markør, lad os nu se, hvad der er syntaksen for en markør i SQL.

Syntaks for en SQL-markør

Nedenfor er den generelle syntaks til at oprette en eksplicit markør.

CURSOR cursorName IS selectStatement;

Her:

cursorName – Dette repræsenterer et gyldigt navn for markøren

selectStatement – ​​Dette repræsenterer en udvalgt forespørgsel, der returnerer flere rækker

Lad os nu gå videre med denne artikel og se livscyklussen for en SQL-markør.

Markørlivscyklus

Der er grundlæggende 5 faser i livscyklussen for en markør i SQL, som jeg har angivet nedenfor:

  1. Erklær
DECLARE cursorName CURSOR
FOR selectStatement;

Dette trin hjælper dig med at specificere markørens navn og datatype, og SELECT-sætningen vil definere dens resultatsæt.

  1. Åben
OPEN cursorName;

Dette trin giver dig mulighed for at åbne og udfylde markøren ved at udføre den.

  1. Hent
FETCH NEXT FROM cursor INTO variableList;

Dette trin vil hente en række fra markøren og gemme den i en eller flere variabler.

[Valgfrit] CheckStatus

WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cursorName;
END;

Denne funktion returnerer status for den sidste FETCH-sætning, der blev udført mod markøren. Hvis denne funktion returnerer 0, betyder det, at FETCH-operationen var vellykket. For at hente alle rækkerne fra markøren, bruges WHILE-sætningen.

  1. Luk
CLOSE cursorName;

Dette trin hjælper dig med at lukke markøren, efter at handlingerne er udført.

  1. Deallokér
DEALLOCATE cursor_name;

Dette trin hjælper med at tildele markøren og frigøre hukommelsesplads.

Med dette vil jeg gerne afslutte denne artikel om Cursor i SQL. Jeg håber, at denne artikel har hjulpet dig med at tilføje værdi til din viden. For mere information om SQL eller databaser, kan du henvise til vores omfattende læseliste her:Databaser Edureka .

SQL Basics for begyndere | Lær SQL | SQL Tutorial for begyndere | Edureka

Denne Edureka-video om 'SQL Basics for Beginners' hjælper dig med at forstå det grundlæggende i SQL og også SQL-forespørgsler, som er meget populære og vigtige.

Hvis du ønsker at få en struktureret træning i MySQL, så tjek vores MySQL DBA Certification Training som kommer med instruktørledet livetræning og projekterfaring i det virkelige liv. Denne træning vil hjælpe dig med at forstå MySQL i dybden og hjælpe dig med at opnå beherskelse over emnet.

Har du et spørgsmål til os? Nævn det i kommentarfeltet i "Markør i SQL ” og jeg vender tilbage til dig.


  1. MySQL viser status - aktive eller samlede forbindelser?

  2. Hvordan opsætter man pandas DataFrame til PostgreSQL-tabellen?

  3. Hvordan omdirigerer man outputtet fra DBMS_OUTPUT.PUT_LINE til en fil?

  4. Sådan installeres MySQL Workbench på Windows