Ich kann verstehen, dass ich aufgrund des Overheads und der Unannehmlichkeiten vermeiden möchte, einen Cursor verwenden zu müssen, aber es sieht so aus, als ob es eine ernsthafte Cursor-Phobie-Manie gibt, bei der die Leute große Anstrengungen unternehmen, um zu vermeiden, dass sie einen verwenden müssen.
In einer Frage wurde beispielsweise gefragt, wie mit einem Cursor etwas offensichtlich Triviales zu tun ist, und die akzeptierte Antwort wurde unter Verwendung einer rekursiven Abfrage mit allgemeinem Tabellenausdruck (CTE) mit einer rekursiven benutzerdefinierten Funktion vorgeschlagen, obwohl dies die Anzahl der Zeilen begrenzt, die verarbeitet werden können, auf 32 (aufgrund des rekursiven Funktionsaufruflimits im SQL Server). Dies scheint mir eine schreckliche Lösung für die Langlebigkeit des Systems zu sein, ganz zu schweigen von einer enormen Anstrengung, nur um die Verwendung eines einfachen Cursors zu vermeiden.
Was ist der Grund für diesen wahnsinnigen Hass? Hat eine "bekannte Autorität" eine Fatwa gegen Cursor erlassen? Lauert ein unaussprechliches Übel im Herzen von Cursorn, die die Moral von Kindern verfälschen oder so?
Wiki-Frage, mehr an der Antwort interessiert als an der Wiederholung.
Verwandte Informationen:
SQL Server-Schnellvorlauf-Cursor
EDIT: Lassen Sie mich genauer sein: Ich verstehe, dass Cursor nicht anstelle von normalen relationalen Operationen verwendet werden sollten ; das ist ein Kinderspiel. Was ich nicht verstehe, sind Leute, die sich alle Mühe geben, um Cursor zu vermeiden, als hätten sie Cooties oder ähnliches, selbst wenn ein Cursor eine einfachere und / oder effizientere Lösung ist. Es ist der irrationale Hass, der mich verblüfft, nicht die offensichtlichen technischen Effizienzvorteile.
32
ist Unsinn. Vermutlich denken Sie an rekursive Trigger und das Maximum @@NESTLEVEL
von 32
. Sie kann in der Abfrage OPTION (MAXRECURSION N)
mit Standard 100
und 0
unbegrenzter Bedeutung festgelegt werden.