Creative Saplings

PL / SQL – markører

januar 30, 2021
No Comments
Annoncer

I dette kapitel vil vi diskutere markørerne i PL / SQL. Oracle opretter et hukommelsesområde, kendt som kontekstområdet, til behandling af en SQL-sætning, som indeholder alle de oplysninger, der er nødvendige for at behandle udsagnet; for eksempel antallet af behandlede rækker osv.

En markør er en markør til dette kontekstområde. PL / SQL styrer kontekstområdet gennem en markør. En markør indeholder rækkerne (en eller flere) returneret af en SQL-sætning. Sættet med rækker, som markøren holder, kaldes det aktive sæt.

Du kan navngive en markør, så det kan henvises til i et program for at hente og behandle de rækker, der returneres af SQL-sætningen, en på et tidspunkt. Der er to typer markører –

  • Implicitte markører
  • Eksplicitte markører

Implicitte markører

Implicitte markører oprettes automatisk af Oracle, hver gang en SQL-sætning udføres, når der ikke er nogen eksplicit markør for udsagnet. Programmører kan ikke kontrollere de implicitte markører og informationen i den.

Når der udstedes en DML-sætning (INSERT, UPDATE og DELETE), er en implicit markør knyttet til denne erklæring. Ved INSERT-operationer indeholder markøren de data, der skal indsættes. For OPDATERING og SLETNING-handlinger identificerer markøren de rækker, der vil blive berørt.

I PL / SQL kan du henvise til den seneste implicitte markør som SQL-markøren, som altid har attributter som% FOUND ,% ISOPEN,% NOTFOUND og% ROWCOUNT. SQL-markøren har yderligere attributter,% BULK_ROWCOUNT og% BULK_EXCEPTIONS, designet til brug sammen med FORALL-sætningen. Følgende tabel giver en beskrivelse af de mest anvendte attributter –

S.No Attribut & Beskrivelse
1

% FOUND

Returnerer SAND, hvis en INSERT-, UPDATE- eller DELETE-sætning påvirkede en eller flere rækker, eller en SELECT INTO-sætning returnerede en eller flere rækker. Ellers returnerer den FALSK.

2

% NOTFOUND

Det logiske modsatte af% FOUND. Det returnerer SAND, hvis en INSERT-, UPDATE- eller DELETE-sætning ikke påvirkede nogen rækker, eller en SELECT INTO-sætning returnerede ingen rækker. Ellers returnerer den FALSE.

3

% ISOPEN

Returnerer altid FALSE for implicitte markører, fordi Oracle lukker SQL-markøren automatisk efter udførelse af den tilknyttede SQL-sætning.

4

% ROWCOUNT

Returnerer antallet af rækker, der er påvirket af en INSERT-, UPDATE- eller DELETE-sætning, eller returneres af en SELECT INTO-sætning.

Enhver SQL-markørattribut får adgang som sql% attributnavn som vist nedenfor i eksemplet.

Eksempel

Vi bruger CUSTOMERS-tabellen, som vi havde oprettet og brugt i de foregående kapitler.

Det følgende program opdaterer tabellen og øger hver kundes løn med 500 og bruger SQL% ROWCOUNT-attribut til bestemmelse af antallet af berørte rækker –

Når ovenstående kode udføres ved SQL-prompten, producerer den følgende resultat –

6 customers selected PL/SQL procedure successfully completed. 

Hvis du tjekker posterne i kundetabellen, finder du, at rækkerne er blevet opdateret –

Eksplicitte markører

Eksplicitte markører er programmørdefinerede markører for at få mere kontrol over kontekstområdet. En eksplicit markør skal defineres i erklæringsafsnittet i PL / SQL-blokken. Det oprettes på en SELECT-sætning, der returnerer mere end en række.

Syntaksen til oprettelse af en eksplicit markør er –

CURSOR cursor_name IS select_statement; 

Arbejder med en eksplicit markør inkluderer følgende trin –

  • Erklæring om markøren til initialisering af hukommelsen
  • Åbning af markøren til tildeling af hukommelsen
  • Hentning af markøren til hentning af data
  • Lukning af markøren for at frigøre den tildelte hukommelse

Erklæring om markøren

Erklæring om markøren definerer markøren med et navn og den tilknyttede SELECT-sætning. For eksempel –

CURSOR c_customers IS SELECT id, name, address FROM customers; 

Åbning af markøren

Åbning af markøren tildeler hukommelsen til markøren og gør den klar til at hente de returnerede rækker af SQL-sætningen ind i det. For eksempel åbner vi den ovenfor definerede markør som følger –

OPEN c_customers; 

Henter markøren

At hente markøren indebærer adgang til en række kl. en tid. For eksempel henter vi rækker fra den ovenfor åbnede markør som følger –

FETCH c_customers INTO c_id, c_name, c_addr; 

Lukning af markøren

Lukning af markøren betyder frigørelse den tildelte hukommelse.For eksempel lukker vi den ovenfor åbnede markør som følger –

CLOSE c_customers;

Eksempel

Følgende er et komplet eksempel for at illustrere begreberne af eksplicitte markører & minua;

Når ovenstående kode udføres ved SQL-prompten, producerer den følgende resultat –

1 Ramesh Ahmedabad 2 Khilan Delhi 3 kaushik Kota 4 Chaitali Mumbai 5 Hardik Bhopal 6 Komal MP PL/SQL procedure successfully completed. 
Annoncer

Articles
Previous Post

Sustanon 250-cyklus

Next Post

Hvor meget data Netflix bruger - hvordan man styrer det og bruger mindre

Skriv et svar Annuller svar

Seneste indlæg

  • Verdens bedste fotografiskoler, 2020
  • Suveræne borgere tager deres regeringsfilosofi til vejene
  • Guide til reparation af stuk reparationer
  • Muckrakers (Dansk)
  • Precision Oncology

Arkiver

  • februar 2021
  • januar 2021
  • december 2020
  • november 2020
  • oktober 2020
  • september 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.