En markör är en SQL-databas programmering struktur som de flesta databas programmerare försöker undvika när det är möjligt . En SQL-databas byggs för behandling grupper av poster , eller " dataset ", men en markör är konstruerad för att hantera en enda post i taget --- och de kan också låsa alla andra program ur tabellerna de refererar tills de är äntligen klar . Byta markörer med olika strukturer är nästan alltid en bra SQL programmering praxis . Emulera en Markör Med en while-slinga
en while-slinga visas liknar en markör struktur , men har inte samma låsning påföljder . Därför kan det ta nästan lika lång tid att bearbeta, men det låser inte andra program ur tabellerna det använder
Ett exempel på en While struktur : .
While villkor ( programmet kommer slingan så länge villkoret är sant ) katalog
Börja
kod ( koden körs en gång på varje passage genom Medan loop ) katalog
End
Definiera en funktion
SQL har användardefinierade funktioner . Hellre än att samla alla resultat och sedan analysera dem en i taget med en markör , kan användardefinierad funktion användas som en del av SELECT-satsen . Att placera en användardefinierad funktion i en Select
fråga , använd denna struktur :
Välj förnamn , efternamn , dbo.user_function ( account_balance ) som AverageBalance
bygger en gemensam tabell Expression
Tänk på en gemensam tabell Expression som en trimmad temporär tabell . Du kan bygga en gemensam tabell Expression med en mängd standardiserade frågor och sedan arbeta med dem som om de vore vanliga SQL- tabeller
Strukturen på en Common Table Expression är : .
My_CTE (
Standard urvalsfrågor gå hit
) ,
Efter my_CTE har definierats , kan ytterligare frågor referera det som om det var en tabell
.
Lägg till ett identitetskolumn
en av de vanligaste anledningarna att använda en markör är att bläddra igenom en tabell som inte har en identitet kolumn --- det är en unik identifierare för varje rad i tabellen . Utan denna identifierare , är det mycket svårt att arbeta med data med standard urvalsfrågor . Ändra tabellen för att lägga till en primärnyckelkolumn löser det problemet och bör eliminera behovet av en markör för att granska varje enskild post .