متغیرها: نگهداشتن یک مقدار موقت داخل اسکریپت
مبتدی
۱۰ دقیقه مطالعه
در 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 معادل مستقیمی ندارد؛ یک جدول موقت تکردیفی میتواند همان نقش را بازی کند.
در آخرین درس این فصل، همان جدولهای موقت را با جزئیات کامل میبینیم.