دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
Class Library در سی شارپ
1404/01/10 -
دستور BREAK در پایگاه داده sql
1404/01/02 -
دستور CONTINUE در پایگاه داده SQL
1404/01/01 -
دستور WAITFOR در پایگاه داده SQL
1403/12/26 -
دستور GOTO در پایگاه داده SQL
1403/12/25 -
حلقه WHILE در پایگاه داده SQL
1403/12/24
حلقه WHILE در پایگاه داده SQL

حلقه WHILE در پایگاه داده SQL
حلقه WHILE در پایگاه داده SQL برای اجرای مکرر یک سری دستورات تا زمانی که یک شرط خاص برقرار باشد، استفاده میشود.
ساختار آن به این صورت است که ابتدا شرط مورد نظر بررسی میشود و اگر درست باشد، دستورات داخل حلقه اجرا میشوند.
این فرآیند تکرار میشود تا زمانی که شرط غلط شود. حلقههای WHILE معمولاً در پروسیجرها و توابع ذخیرهشده برای انجام عملیاتهای تکراری و پیچیدهتر به کار میروند.
یک نکته مهم در استفاده از حلقه WHILE این است که باید مراقب باشید که شرط بهگونهای تنظیم شود که در نهایت به اشتباه وارد حلقه بیپایان نشوید.
در غیر این صورت، حلقه بدون توقف ادامه خواهد یافت و ممکن است منابع سیستم را مصرف کند.
به همین دلیل، معمولاً از متغیرهایی برای کنترل تعداد تکرارها و تغییر شرط استفاده میشود تا از اجرای بیپایان جلوگیری شود.
ساختار حلقه WHILE در SQL
حلقه WHILE در SQL به شما این امکان را میدهد که یک بخش از کد را تا زمانی که شرط خاصی برقرار باشد، تکرار کنید. ساختار پایه آن به صورت زیر است:
WHILE شرط
BEGIN
-- دستورات SQL برای اجرا در هر تکرار
END
در اینجا، شرط یک عبارت منطقی است که باید نتیجه آن در هر تکرار بررسی شود.
این شرط میتواند هر چیزی باشد که به صورت TRUE یا FALSE ارزیابی میشود. وقتی شرط به FALSE تغییر کند، حلقه متوقف میشود و اجرای دستورهای بعدی ادامه مییابد.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟
با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!
این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.
با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.
پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
همین حالا شروع کنید و به دنیای دادهها بپیوندید!
نحوه کار حلقه WHILE در SQL
-
بررسی شرط
ابتدا شرط حلقه بررسی میشود. اگر شرط TRUE باشد، حلقه شروع به اجرا میکند. -
اجرا
پس از بررسی شرط، دستورات داخل بلوک BEGIN...END اجرا میشود. -
بازگشت به شرط
پس از اجرای دستورات، مجدداً شرط بررسی میشود.
اگر همچنان TRUE باشد، حلقه دوباره اجرا میشود.
این روند تا زمانی که شرط FALSE شود، ادامه مییابد. -
اتمام
وقتی شرط به FALSE تغییر کند، حلقه متوقف میشود و دستورات بعد از حلقه اجرا میشود.
نحوه ایجاد دستور WHILE در SQL
برای ایجاد دستور WHILE، شما باید یک متغیر یا یک شرط منطقی داشته باشید که به صورت مداوم بررسی شود.
در اینجا، به مثالهایی از نحوه استفاده از حلقه WHILE در SQL میپردازیم.
مثال 1: حلقه WHILE ساده برای شمارش
در این مثال، ما یک متغیر @counter داریم که از 1 شروع میکند و هر بار با اجرای حلقه، مقدار آن یک واحد افزایش مییابد تا زمانی که به 10 برسد.
DECLARE @counter INT = 1;
WHILE @counter <= 10
BEGIN
PRINT 'Counter value: ' + CAST(@counter AS VARCHAR);
SET @counter = @counter + 1;
END
شرح:
در این مثال ابتدا متغیر @counter با مقدار 1 مقداردهی اولیه میشود.
شرط حلقه @counter <= 10 است. یعنی حلقه تا زمانی که @counter کمتر از یا برابر با 10 باشد، ادامه مییابد.
در داخل حلقه، مقدار @counter چاپ میشود و سپس یک واحد به آن افزوده میشود.
مثال 2: حلقه WHILE برای بروزرسانی رکوردها
در این مثال، فرض کنید که یک جدول به نام Employees دارید که در آن اطلاعات کارکنان ذخیره شده است.
شما میخواهید حقوق کارکنان را به مقدار 1000 افزایش دهید تا زمانی که حقوق آنها کمتر از 5000 باشد.
DECLARE @salary INT = 1000;
WHILE @salary < 5000
BEGIN
UPDATE Employees
SET Salary = Salary + 1000
WHERE Salary = @salary;
SET @salary = @salary + 1000;
END
شرح:
در این مثال متغیر salary@ از 1000 شروع میشود.
حلقه بررسی میکند که آیا salary@ کمتر از 5000 است.
در هر تکرار، حقوق کارکنانی که حقوقشان برابر با salary@ است، به اندازه 1000 افزایش مییابد.
سپس، salary@ به مقدار 1000 افزایش مییابد و حلقه مجدداً اجرا میشود.
مثال 3: استفاده از حلقه WHILE برای محاسبه مجموع اعداد
در این مثال، از حلقه WHILE برای محاسبه مجموع اعداد از 1 تا 100 استفاده میکنیم.
DECLARE @sum INT = 0;
DECLARE @i INT = 1;
WHILE @i <= 100
BEGIN
SET @sum = @sum + @i;
SET @i = @i + 1;
END
PRINT 'Total sum: ' + CAST(@sum AS VARCHAR);
شرح:
در اینجا ابتدا متغیرهای @sum و @i تعریف میشوند.
در داخل حلقه، مقدار @i به متغیر @sum اضافه میشود.
سپس، مقدار @i افزایش مییابد و حلقه ادامه مییابد تا زمانی که @i به 100 برسد.
در نهایت، مجموع اعداد از 1 تا 100 در متغیر @sum ذخیره شده و چاپ میشود.
نکات مهم در استفاده از حلقه WHILE
-
اجتناب از حلقههای بیپایان
اگر شرط در حلقه به درستی تغییر نکند، ممکن است حلقه به صورت نامحدود اجرا شود.
این موضوع میتواند باعث مصرف زیاد منابع سیستم و کند شدن پایگاه داده شود.
به عنوان مثال، اگر فراموش کنید که مقدار متغیرهای شرطی را به درستی تغییر دهید، حلقه وارد یک چرخه بیپایان میشود. -
استفاده از دستورات BREAK و CONTINUE
- BREAK: این دستور باعث میشود که حلقه فوراً متوقف شود.
- CONTINUE: این دستور باعث میشود که تکرار بعدی حلقه بدون انجام دستورات باقیمانده، شروع شود.
به عنوان مثال:
DECLARE @counter INT = 1;
WHILE @counter <= 10
BEGIN
IF @counter = 5
BEGIN
BREAK; -- حلقه را متوقف میکند
END
PRINT 'Counter value: ' + CAST(@counter AS VARCHAR);
SET @counter = @counter + 1;
END
-
مراقب عملکرد باشید
اگرچه حلقههای WHILE در SQL قدرتمند هستند، اما باید مراقب باشید که از آنها برای انجام عملیاتهای پیچیده یا غیرضروری استفاده نکنید.
به جای استفاده از حلقهها، در بسیاری از مواقع میتوان از دستورات SQL مبتنی بر مجموعه (مثل JOIN یا UPDATE) استفاده کرد که کارآمدتر هستند.
مثال پروژه محور از حلقه WHILE در پایگاه داده SQL
پروژه: افزایش تدریجی فروش محصولات تا رسیدن به هدف
ساختار جدول Sales
CREATE TABLE Sales (
ProductID INT PRIMARY KEY,
ProductName VARCHAR(100),
DailySales INT,
TargetSales INT
);
فرض کنید شما محصولات مختلفی دارید و میخواهید فروش روزانه آنها را به تدریج افزایش دهید تا زمانی که به هدف فروش روزانه هر محصول برسید.
دادههای اولیه جدول Sales
INSERT INTO Sales (ProductID, ProductName, DailySales, TargetSales)
VALUES
(1, 'Product A', 50, 100),
(2, 'Product B', 30, 90),
(3, 'Product C', 70, 120);
هدف پروژه:
افزایش فروش روزانه هر محصول به تدریج تا زمانی که به TargetSales هر محصول برسیم. این کار را با استفاده از حلقه WHILE انجام خواهیم داد.
کد پروژه
DECLARE @ProductID INT;
DECLARE @DailySales INT;
DECLARE @TargetSales INT;
-- انتخاب اولین محصول از جدول
DECLARE product_cursor CURSOR FOR
SELECT ProductID, DailySales, TargetSales
FROM Sales;
-- باز کردن کرسر
OPEN product_cursor;
-- خواندن اولین رکورد
FETCH NEXT FROM product_cursor INTO @ProductID, @DailySales, @TargetSales;
-- اجرای حلقه برای هر محصول
WHILE @@FETCH_STATUS = 0
BEGIN
-- افزایش فروش روزانه تا رسیدن به هدف
WHILE @DailySales < @TargetSales
BEGIN
-- بروزرسانی فروش روزانه
UPDATE Sales
SET DailySales = DailySales + 1
WHERE ProductID = @ProductID;
-- خواندن مجدد مقدار فروش روزانه
SELECT @DailySales = DailySales
FROM Sales
WHERE ProductID = @ProductID;
END
-- خواندن رکورد بعدی
FETCH NEXT FROM product_cursor INTO @ProductID, @DailySales, @TargetSales;
END
-- بستن کرسر
CLOSE product_cursor;
DEALLOCATE product_cursor;
-- مشاهده نتایج نهایی
SELECT * FROM Sales;
شرح پروژه
- ایجاد کرسر: برای انتخاب رکوردهای محصولات از جدول Sales یک کرسر ایجاد میکنیم.
- حلقه اول (کرسر): برای هر محصول، مقدار فروش روزانه و هدف فروش آن محصول بررسی میشود.
- حلقه دوم (WHILE): برای هر محصول، فروش روزانه آن افزایش مییابد تا به هدف فروش برسد.
- بروزرسانی دادهها: در هر تکرار حلقه داخلی، مقدار فروش روزانه محصول به اندازه 1 واحد افزایش مییابد.
- اتمام فرآیند: پس از افزایش فروش هر محصول، کرسر به رکورد بعدی میرود و حلقهها تکرار میشوند.
- نتایج: در پایان، تمامی رکوردهای جدول Sales بهروزرسانی میشوند و میتوانید نتیجه را مشاهده کنید.
خروجی نهایی
این کد باعث میشود که فروش هر محصول تا رسیدن به هدف مشخصشده افزایش یابد.
به عنوان مثال، اگر فروش روزانه محصول A برابر با 50 و هدف آن 100 است، حلقه فروش روزانه را 50 بار افزایش خواهد داد تا به هدف 100 برسد.
دوره های مرتبط

آموزش پایگاه داده SqlServer
پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .