Hamstar: MS SQL zeilenweise SP rufen

Beitrag lesen

Cursors sind für diese Art von Verarbeitung aktuell die einzige Möglichkeit und leider gottes nicht gerade sehr schonend.

Cursor sind bestmöglich zu vermeiden. Ich weiss jetzt nicht genau wie die implementiert sind, aber bestimmte Cursortypen sperren Daten.

Es gibt verschiedene Optimierungsmöglichkeiten (auskommentierte Optionen am Anfang), die du dir im Handbuch von MS SQL durchlesen solltest.

Immer den read only-Cursortyp benutzen, wenn irgendwie möglich. Oft empfehlen sich zwecks Cursorvermeidung dann auch Datenkopien (temporäre Tabellen bspw.).

Und als Hinweis, es gibt in 80% der Fälle wo nur die Verwendung eines Cursors möglich scheint immer eine besser Alternative mit etwas mehr Umschreibeaufwand.

LOL - der Prozentsatz verhält sich reziprok zur Erfahrung und Verständigkeit des Entwickler. "80%" ist da die Aussage des Zynikers, also des Mannes, der weiss was er schreibt.

Bspw. könntest du eine Funktion schreiben und diese in dein eigentliches SELECT mit einbauen, so könnte sie auch von den selektierten Werten gefüttert werden.

Zum Bleistift. Der Vollständigkeit ist noch anzumerken, dass ein Cursor einen Lauf (Fachwort - LOL) darstellt, wie man ihn bspw. aus Zeiten der ISAM-Tabellen (COBOL, Basic etc.) kennt. Läufe sind immer problematisch.