Kann ich eine Tabellenvariable in T-SQL durchlaufen?
Ist es irgendwie in einer Schleife durch eine table-variable, die in T-SQL?
DECLARE @table1 TABLE ( col1 int )
INSERT into @table1 SELECT col1 FROM table2
Ich verwenden von Cursorn, als gut, aber Cursor scheinen weniger flexibel als Tisch-Variablen.
DECLARE cursor1 CURSOR
FOR SELECT col1 FROM table2
OPEN cursor1
FETCH NEXT FROM cursor1
Ich würde gerne in der Lage sein, eine Tabelle zu verwenden variable in der gleichen Weise wie ein cursor. So konnte ich ausführen einer Abfrage auf die Tabelle " Variablen in einem Teil des Verfahrens, und dann später ausführen von code für jede Zeile in der Tabelle variable.
Jede Hilfe wird sehr geschätzt.
Kommentar zu dem Problem - Öffnen
ähnliche Frage hier: stackoverflow.com/questions/61967/...
"Cursor scheinen weniger flexibel als Tisch-Variablen". Diese Aussage macht nicht wirklich Sinn machen. Sie sind völlig verschiedene Dinge. Natürlich können Sie einen cursor zum Durchlaufen einer Tabelle variable.
InformationsquelleAutor der Frage Kuyenda | 2009-10-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen einer Identität, die Ihre table-variable und eine einfache Schleife von 1 an die @@ROWCOUNT-EINFÜGEN-WÄHLEN Sie.
Versuchen Sie dies:
InformationsquelleAutor der Antwort KM.
Ob Sie es glauben oder nicht, das ist tatsächlich effizienter und performanter als die Verwendung eines Cursors.
InformationsquelleAutor der Antwort Justin Niessner
Können Sie die Schleife über die Tabelle variable oder können Sie den cursor durch. Dies ist, was wir gewöhnlich als ein RBAR - ausgeprägte Reebar und bedeutet " Zeile-Für-Trauernde-Reihe.
Ich würde vorschlagen, die Suche nach einem SET-BASIERTE Antwort auf Ihre Frage (wir können helfen), und verschieben Sie Sie Weg von rbars so viel wie möglich.
InformationsquelleAutor der Antwort Raj More
Aussehen dieser demo:
Version ohne idRow, mit ROW_NUMBER
InformationsquelleAutor der Antwort Gildor
Meine zwei Cent.. Von KM.'s Antwort, wenn Sie eine variable, die Sie tun können, ein countdown-Zähler auf @RowsToProcess statt zählen.
InformationsquelleAutor der Antwort typoerrpr
Hier ist eine weitere Antwort, ähnlich wie Justin, muss aber nicht, eine Identität oder ein Aggregat, nur eine primäre (eindeutigen) Schlüssel.
InformationsquelleAutor der Antwort Jeff Meatball Yang
Hier ist meine Variante. Ziemlich genau so wie alle anderen, aber ich habe nur eine variable verwenden, zum verwalten der Schleife.
Raj Mehr der Punkt ist relevant--nur Schleifen, wenn Sie müssen.
InformationsquelleAutor der Antwort Philip Kelley
Wusste ich nicht über die WHILE-Struktur.
Die WHILE-Struktur mit einer Tabelle variabel, jedoch vergleichbar mit einem CURSOR, in die Sie noch haben, WÄHLEN Sie die Zeile in einer Variablen basierend auf der Zeile, die IDENTITÄT, das ist tatsächlich eine HOLEN.
Ist, gibt es einen Unterschied zwischen DENEN und sowas wie das folgende?
Ich weiß nicht, ob das überhaupt möglich ist. Ich nehme an, Sie haben könnte, um dies zu tun:
Danke für deine Hilfe!!!
InformationsquelleAutor der Antwort Kuyenda
Hier ist meine version von der gleichen Lösung...
InformationsquelleAutor der Antwort Gary Kindel
Folgende Gespeicherte Prozedur in einer Schleife durch die Table-Variable und Druckt es in Aufsteigender REIHENFOLGE. In diesem Beispiel ist die Verwendung einer WHILE-SCHLEIFE.
Folgenden Anweisung wird die Gespeicherte Prozedur Ausführt:
Das Ergebnis angezeigt, im SQL-Abfrage-Fenster wird unten gezeigt:
Die Funktion PARSE_COMMA_DELIMITED_INTEGER() returns TABLE-variable ist wie unten dargestellt :
InformationsquelleAutor der Antwort Rahul Varadkar