T-SQL-hurkok használata a Synapse SQL-sel az Azure Synapse Analyticsben
Ez a cikk alapvető tippeket nyújt a T-SQL-hurkok használatához, a kurzorok cseréjéhez és a kapcsolódó megoldások Synapse SQL-lel való fejlesztéséhez.
A WHILE hurkok rendeltetése
A Synapse SQL támogatja a WHILE hurkot az utasításblokkok ismételt végrehajtásához. Ez a WHILE hurok addig folytatódik, amíg a megadott feltételek teljesülnek, vagy amíg a kód a BREAK kulcsszóval nem szünteti meg a hurkot.
A Synapse SQL hurkoi hasznosak az SQL-kódban definiált kurzorok lecseréléséhez. Szerencsére az SQL-kódban írt kurzorok szinte mindegyike gyors előremutató, írásvédett. A WHILE hurkok tehát kiváló alternatívát jelentenek a kurzorok cseréjére.
Kurzorok cseréje a Synapse SQL-ben
A beugrás előtt a következő kérdést kell figyelembe venni: "Lehet ezt a kurzort újraírni a set-based műveletek használatához?" Sok esetben a válasz igen, és gyakran a legjobb megközelítés. A készletalapú műveletek gyakran gyorsabban hajtanak végre, mint az iteratív, sorról sorra megközelítés.
A gyors előre csak olvasható kurzorok könnyen lecserélhetőek egy hurkolt szerkezetre. Az alábbi kód egy egyszerű példa. Ez a példakód frissíti az adatbázis összes táblájának statisztikáját. A ciklus tábláinak iterálásával az egyes parancsok egymás után futnak.
Először hozzon létre egy ideiglenes táblát, amely egyedi sorszámot tartalmaz az egyes utasítások azonosításához:
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
;
Másodszor inicializálja a ciklus végrehajtásához szükséges változókat:
DECLARE @nbr_statements INT = (SELECT COUNT(*) FROM #tbl)
, @i INT = 1
;
Most váltsa át azokat az utasításokat, amelyek egyenként hajtják végre azokat:
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
Végül elveti az első lépésben létrehozott ideiglenes táblát
DROP TABLE #tbl;
Következő lépések
További fejlesztési tippekért tekintse meg a fejlesztés áttekintését.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: