إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تتضمن هذه المقالة نصائح لتطوير حلول تجمع SQL المخصصة باستخدام حلقات T-SQL واستبدال المؤشرات.
الغرض من حلقات WHILE
تدعم تجمعات SQL المخصصة في Azure Synapse حلقة WHILE لتنفيذ كتل العبارة بشكل متكرر. تستمر حلقة WHILE هذه طالما أن الشروط المحددة صحيحة أو لحين قيام التعليمات البرمجية بإنهاء الحلقة بشكل خاص باستخدام الكلمة الأساسية BREAK.
الحلقات مفيدة لاستبدال المؤشرات المحددة في التعليمات البرمجية SQL. لحسن الحظ، تنتمي جميع المؤشرات المكتوبة في التعليمات البرمجية SQL إلى مجموعة متنوعة سريعة للقراءة فقط. لذلك، تعد حلقات WHILE بديلا رائعا لاستبدال المؤشرات.
استبدال المؤشرات في تجمع 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;
الخطوات التالية
لمزيد من نصائح التطوير، راجع نظرة عامة على التطوير.