خانه/ برنامه‌نویسی در SQL Server/ متغیرها

متغیرها: نگه‌داشتن یک مقدار موقت داخل اسکریپت

مبتدی ۱۰ دقیقه مطالعه

در Stored Procedureها با پارامترهایی مثل @City آشنا شدیم. همان نماد @ برای متغیرها هم استفاده می‌شود — جایی برای نگه‌داشتن یک مقدار موقت، وسط یک اسکریپت SQL، بدون نیاز به رویه یا تابع.

ساختار پایه در SQL Server

sql
DECLARE @MinGrade INT;
SET @MinGrade = 10;

SELECT full_name, grade
FROM students
WHERE grade >= @MinGrade;

DECLARE متغیر را با یک نوع داده تعریف می‌کند، و SET مقداری در آن می‌گذارد. از این به بعد، هرجای اسکریپت که @MinGrade بیاید، همان مقدار جایگزین می‌شود.

نکته‌ی مهم: SQLite هیچ نحو DECLARE/SET برای متغیر ندارد — این کاملاً مخصوص T-SQL (زبان SQL Server) است. اما یک ترفند رایج وجود دارد: استفاده از یک جدول موقت تک‌ردیفی به‌جای متغیر.

ترفند SQLite: جدول موقت به‌جای متغیر

یک جدول با یک ستون و یک ردیف، می‌تواند نقش همان متغیر را بازی کند — و این‌بار واقعاً قابل‌اجراست:

امتحانش کن — شبیه‌سازی متغیر با جدول موقت
حالا کافی است فقط عدد داخل INSERT INTO var_min_price VALUES (...) را عوض کنی تا آستانه‌ی فیلتر تغییر کند — بدون این‌که مجبور باشی خودِ شرط WHERE price > val را پیدا و ویرایش کنی. دقیقاً همان فایده‌ی یک متغیر.

متغیر برای شمارش و جمع‌بندی هم به‌کار می‌آید

در SQL Server، متغیرها معمولاً برای نگه‌داشتن نتیجه‌ی یک محاسبه‌ی میانی هم استفاده می‌شوند:

sql
DECLARE @TotalRevenue INT;

SELECT @TotalRevenue = SUM(price * quantity)
FROM sales;

SELECT @TotalRevenue AS Total;

جمع‌بندی این درس

  • DECLARE @name TYPE; یک متغیر تعریف می‌کند؛ SET مقدار می‌دهد.
  • متغیرها برای نگه‌داشتن آستانه‌های فیلتر یا نتیجه‌ی محاسبات میانی به‌کار می‌روند.
  • SQLite معادل مستقیمی ندارد؛ یک جدول موقت تک‌ردیفی می‌تواند همان نقش را بازی کند.

در آخرین درس این فصل، همان جدول‌های موقت را با جزئیات کامل می‌بینیم.