Een cursor is een SQL-database programmering structuur die de meeste database- programmeurs proberen te vermijden waar mogelijk. Een SQL-database is gebouwd om groepen records , of verwerken " datasets , " maar een cursor is ontworpen om slechts een enkele record tegelijk verwerken --- en ze kunnen ook blokkeren alle andere programma's uit de tabellen die verwijzing totdat ze eindelijk klaar . Het vervangen van cursors met verschillende structuren is bijna altijd een goede SQL programmering praktijk . Emuleren een Cursor Met een Terwijl Loop A While -lus lijkt vergelijkbaar met een cursor structuur , maar niet dragen dezelfde vergrendeling straffen . Daarom kan het bijna net zo lang in beslag nemen , maar het wordt niet vergrendeld andere programma's uit de tabellen het gebruikt Een voorbeeld van een Terwijl structuur : . While voorwaarde ( het programma zal lus , zolang de voorwaarde waar is ) op Twitter Begin code ( deze code wordt een keer uit te voeren op elke passage door de While-lus ) Einde Definieer een functie SQL heeft de gebruiker gedefinieerde functies . In plaats van het verzamelen van alle van de resultaten en vervolgens analyseren ze een voor een met een cursor , kan de gebruiker gedefinieerde functie worden gebruikt als onderdeel van de Select-instructie . Om een gebruiker gedefinieerde functie te plaatsen in een Select query, gebruik deze structuur : Selecteer voornaam, achternaam , dbo.user_function ( account_balance ) als AverageBalance Build a Common Table Expression Denk aan een Common Table Expression als een opgevoerde tijdelijke tabel . U kunt een Common Table Expression behulp van een verscheidenheid aan standaard queries te bouwen en dan werken met hen alsof ze standaard SQL-tabellen De structuur van een gemeenschappelijk Table Expression is : . P Met my_CTE ( Standard selectiequery's ga hier ) ; Nadat my_CTE is gedefinieerd , kan eventuele verdere vragen te verwijzen alsof het een tafel . Voeg een Identity Column een van de meest voorkomende redenen om een cursor te gebruiken is om door middel van een tabel die niet een identiteit column heeft wel scrollen --- dat is , een unieke identificatie voor elke rij in de tabel . Zonder dat identificatie , het is heel moeilijk om te werken met de gegevens met standaard Select queries . Het wijzigen van de tafel om een primaire sleutel kolom toe te voegen lost dat probleem op en moet de noodzaak van een cursor aan elk individueel dossier onderzoeken elimineren .
|