Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält wichtige Tipps für die Verwendung von T-SQL-Schleifen, das Ersetzen von Cursorn und das Entwickeln verwandter Lösungen mit Synapse SQL.
Zweck von WHILE-Schleifen
Synapse SQL unterstützt die WHILE-Schleife für wiederholt ausgeführte Anweisungsblöcke. Diese WHILE-Schleife wird so lange fortgesetzt, wie die angegebenen Bedingungen wahr sind oder bis der Code die Schleife mit dem SCHLÜSSELwort BREAK spezifisch beendet.
Schleifen in Synapse SQL sind nützlich, um Cursor zu ersetzen, die in SQL-Code definiert sind. Glücklicherweise sind fast alle Cursor, die in SQL-Code geschrieben sind, der schnellen, schreibgeschützten Sorte. So sind WHILE-Schleifen eine großartige Alternative zum Ersetzen von Cursorn.
Ersetzen von Cursorn in Synapse SQL
Bevor man eintaucht, sollte die folgende Frage in Betracht gezogen werden: "Könnte dieser Cursor umgeschrieben werden, um set-basierte Vorgänge zu verwenden?" In vielen Fällen ist die Antwort ja, und dies ist häufig der beste Ansatz. Eine mengenbasierte Operation wird häufig schneller ausgeführt als ein iterativer, zeilenweiser Ansatz.
Schnelle Vorwärts- und Nur-Lese-Cursor werden leicht durch ein Schleifenkonstrukt ersetzt. Der folgende Code ist ein einfaches Beispiel. In diesem Codebeispiel werden die Statistiken für jede Tabelle in der Datenbank aktualisiert. Durch das Iterieren über die Tabellen in der Schleife wird jeder Befehl nacheinander ausgeführt.
Erstellen Sie zunächst eine temporäre Tabelle mit einer eindeutigen Zeilennummer, mit der die einzelnen Anweisungen identifiziert werden:
CREATE TABLE #tbl
WITH
( DISTRIBUTION = ROUND_ROBIN
)
AS
SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS Sequence
, [name]
, 'UPDATE STATISTICS '+QUOTENAME([name]) AS sql_code
FROM sys.tables
;
Zweitens initialisieren Sie die variablen, die zum Ausführen der Schleife erforderlich sind:
DECLARE @nbr_statements INT = (SELECT COUNT(*) FROM #tbl)
, @i INT = 1
;
Durchlaufen Sie jetzt die Anweisungen und führen Sie sie nacheinander aus.
WHILE @i <= @nbr_statements
BEGIN
DECLARE @sql_code NVARCHAR(4000) = (SELECT sql_code FROM #tbl WHERE Sequence = @i);
EXEC sp_executesql @sql_code;
SET @i +=1;
END
Legen Sie schließlich die temporäre Tabelle ab, die im ersten Schritt erstellt wurde.
DROP TABLE #tbl;
Nächste Schritte
Weitere Hinweise zur Entwicklung finden Sie in der Entwicklungsübersicht.