En markør er en SQL database programmering struktur, de fleste database programmører forsøger at undgå når det er muligt . En SQL -database er bygget til at behandle grupper af poster , eller " datasæt ", men en markør er designet til at håndtere kun en enkelt post ad gangen --- og de kan også låse alle andre programmer ud af tabellerne , de referencepunkter , indtil de er endelig færdig . Udskiftning markører med forskellige strukturer er næsten altid en god SQL programmering praksis. Emulere en markøren med en while-løkke
Mens loop synes ligner en cursor struktur, men ikke bærer samme låse sanktioner. Derfor kan det tage næsten lige så lang tid at behandle, men det låser ikke andre programmer ud af tabellerne er det ved hjælp af
Et eksempel på en Mens struktur: .
Betingelse ( vil programmet loop , så længe betingelse er sand )
Begynd
Code ( denne kode vil køre én gang på hver passage gennem Mens sløjfe)
End
definere en funktion
SQL har brugerdefinerede funktioner . Snarere end at samle alle resultaterne , og derefter analysere dem én ad gangen med en markør , kan brugerdefineret funktion skal bruges som en del af den Select erklæring.
For at placere en brugerdefineret funktion i en Select forespørgsel , kan du bruge denne struktur : Hej
Vælg fornavn, efternavn , dbo.user_function ( account_balance ), som AverageBalance
opbygger en fælles tabel Expression
Tænk på en fælles tabel udtryk som en tunet midlertidige tabel . Du kan bygge en fælles tabel Expression ved hjælp af en bred vifte af standard forespørgsler og derefter arbejde med dem som om de var standard SQL tabeller
strukturen i en fælles tabel Expression er : .
My_CTE ( Salg
Standard udvælgelsesforespørgsler gå her
)
Efter my_CTE er blevet defineret , kan yderligere spørgsmål referere det, som om det var et bord
.
Tilføj en identitet kolonne
en af de mest almindelige grunde til at bruge en markør er at rulle gennem en tabel, der ikke har en identitet kolonne --- der er en entydig identifikator for hver række i tabellen . Uden denne identifikator , er det meget vanskeligt at arbejde med dataene med standard Select forespørgsler. Ændring af bordet for at tilføje en primær nøgle kolonne løser dette problem og bør fjerne behovet for en markør til at undersøge hver enkelt post.