Hvordan bruke nestede Pekere

Hvordan bruke nestede Pekere


Pekere er en struktur gitt i programmerbare versjoner av Structured Query Language (SQL) som Sybase eller Microsoft SQL Server Transact-SQL. Definer en markør for en utvalgt eller oppdatere SQL-setning på en eller flere tabeller. Markøren har et navn som du kan bruke til å referere til, åpne og lukke markøren eller hente rader fra markøren settet. Pekere brukes når hver rad i settet trenger behandling eller dens verdier er brukt i programmet variabler. Når en ny markør er deklarert i loop som behandler hver rad med en markør, er den nye indre markøren nestet inne i den gamle ytre markøren.

Bruksanvisning

1 Erklære en markør for en enkel velger setning ved hjelp av følgende T-SQL syntaks:

ERKLÆRER <pekernavn> CURSOR

FOR SELECT field1, field2, field3

FROM &lt;table-name>

HVOR field4 & lt; = @limitval

2 Åpne markøren for behandling ved hjelp av denne T-SQL syntaks:

OPEN <pekernavn>

3 Hente rader fra den åpne linjen for behandling, siden det er en lese (velg) markøren. Erklærer variablene som kreves for å lagre verdier av feltene i den gjeldende markør rad. Den T-SQL syntax for å hente markøren radene er som følger:

HENT NESTE FRA <pekernavn> INTO @ var_fld1, @ var_fld2, @ var_fld3

mens @@ fetch_status == 0

begynne

--- <Prosessen markøren rad her>

HENT NESTE FRA <pekernavn> INTO @ var_fld1, @ var_fld2, @ var_fld3

slutt

4 Legg erklæringen og gjennomføring av andre eller indre markøren i hente løkke av forrige eller ytre markør som følger:

- Ytre markøren hente sløyfe

mens @@ fetch_status == 0

begynne

&lt; process current row of outer cursor here >

- På tide å erklære den indre markøren - hekkende begynner

ERKLÆRER inner_cursor CURSOR

FOR SELECT X, Y, Z, ....

Fra Tabell1, table2, ...

HVOR <betingelse>

OPEN inner_cursor

HENT NESTE FRA inner_cursor TIL @varX, @varY, @varZ ...

mens @@ fetch_status == 0

begynner - indre markøren hente sløyfe

-- &lt;process current inner_cursor row here>

- Få neste p

HENT NESTE FRA inner_cursor TIL @varX, @varY, @varZ ...

end - indre markøren hente sløyfe

end - ytre markøren hente sløyfe

Hint

  • Det anbefales å gjennomføre nestede pekere bare når det er absolutt nødvendig. De er dynamiske SQL og dyrt og taxing for SQL Server for å behandle. Unngå bruk av for mange midlertidige tabeller eller sette inn uttalelser mens du bruker nøstede pekere. Bruk funksjoner og lagrer prosedyrer for å sende parametre og dele data når det er mulig å eliminere behovet for pekere.