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