مشاركة عبر


استخدام التكرارات الحلقية T-SQL مع Synapse SQL في Azure Synapse Analytics

توفر لك هذه المقالة نصائح أساسية لاستخدام التكرارات الحلقية T-SQL واستبدال المؤشرات وتطوير الحلول ذات الصلة باستخدام Synapse SQL.

الغرض من التكرارات الحلقية WHILE

يدعم Synapse SQL التكرارات الحلقية WHILE لتنفيذ كتل العبارة بشكل متكرر. يستمر التكرار الحلقي WHILE هذا طالما أن الشروط المحددة صحيحة أو لحين قيام التعليمة البرمجية بإنهاء تكرار الحلقة بشكل خاص باستخدام الكلمة الأساسية BREAK.

تكرار الحلقات في Synapse SQL مفيدة لاستبدال المؤشرات المحددة في التعليمة البرمجية SQL. لحسن الحظ، تقريبًا جميع المؤشرات المكتوبة في التعليمة البرمجية SQL هي من مجموعة متنوعة سريعة إلى الأمام للقراءة فقط. لذلك، تعد التكرارات الحلقية WHILE بديلاً رائعًا لاستبدال المؤشرات.

استبدال المؤشرات في Synapse SQL

قبل التعمق، يجب مراعاة السؤال التالي: "هل يمكن إعادة كتابة هذا المؤشر لاستخدام العمليات المستندة إلى مجموعة؟" في كثير من الحالات، تكون الإجابة نعم وغالبًا ما تكون أفضل نهج. غالبًا ما تنفذ العملية المستندة إلى المجموعة بشكل أسرع من نهج تكراري مكون من سجل تلو الآخر.

يمكن استبدال مؤشرات القراءة فقط السريعة للأمام بسهولة ببنية التكرارات الحلقية. التعليمة البرمجية التالية هي مثال بسيط. مثال التعليمة البرمجية هذه يقوم بتحديث الإحصائيات لكل جدول في قاعدة البيانات. بالتكرار عبر الجداول في التكرار الحلقي، يتم تنفيذ كل أمر بالتسلسل.

أولاً، قم بإنشاء جدول مؤقت يحتوي على رقم سجل فريد يستخدم لتعريف العبارات الفردية:

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
;

ثانيًا، تهيئة المتغيرات المطلوبة لتنفيذ التكرار الحلقي:

DECLARE @nbr_statements INT = (SELECT COUNT(*) FROM #tbl)
,       @i INT = 1
;

الآن التكرار الحلقي للعبارات التي تنفذها واحدة تلو الأخرى:

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

أخيرًا قم بقطع الجدول المؤقت الذي تم إنشاؤه في الخطوة الأولى

DROP TABLE #tbl;

الخطوات التالية

لمزيد من نصائح التطوير، راجع نظرة عامة على التطوير.