متغيرات SQL: إعلان SQL Server وتعيين وتحديد المتغير
ما هو المتغير في SQL Server؟
في MS SQL، المتغيرات هي الكائن الذي يعمل كعنصر نائب لموقع الذاكرة. متغير عقد قيمة بيانات واحدة.
أنواع المتغيرات في SQL: المحلية والعالمية
يحتوي MS SQL على نوعين من المتغيرات:
- متغير محلي
- متغير عالمي.
ومع ذلك، يمكن للمستخدم إنشاء متغير محلي فقط.
يوضح الشكل أدناه نوعين من المتغيرات المتوفرة في خادم MS SQL.

متغير محلي
- يعلن المستخدم عن المتغير المحلي.
- بشكل افتراضي، يبدأ المتغير المحلي بـ @.
- كل نطاق متغير محلي له قيود على الدفعة أو الإجراء الحالي في أي جلسة معينة.
المتغير العام
- يحتفظ النظام بالمتغير العالمي. لا يمكن للمستخدم الإعلان عنها.
- يبدأ المتغير العالمي بـ @@
- يخزن المعلومات المتعلقة بالجلسة.
كيفية الإعلان عن متغير في SQL
- قبل استخدام أي متغير في الدفعة أو الإجراء، تحتاج إلى ذلك أعلن المتغير.
- يتم استخدام أمر DECLARE لمتغير DECLARE الذي يعمل كعنصر نائب لموقع الذاكرة.
- بمجرد إصدار الإعلان، يمكن استخدام المتغير في الجزء التالي من الدفعة أو الإجراء.
بناء جملة TSQL:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
قواعد:
- التهيئة شيء اختياري أثناء الإعلان.
- بشكل افتراضي، يقوم DECLARE بتهيئة المتغير إلى NULL.
- يعد استخدام الكلمة الأساسية "AS" أمرًا اختياريًا.
- للإعلان عن أكثر من متغير محلي، استخدم فاصلة بعد تعريف المتغير المحلي الأول، ثم حدد اسم المتغير المحلي التالي و نوع البيانات.
أمثلة على الإعلان عن المتغير
الاستعلام: مع "AS"
DECLARE @COURSE_ID AS INT;
الاستعلام: بدون "AS"
DECLARE @COURSE_NAME VARCHAR (10);
الاستعلام: قم بتعريف متغيرين
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
تعيين قيمة لمتغير SQL
يمكنك تعيين قيمة لمتغير في ما يلي ثلاثة طرق:
- أثناء إعلان المتغير باستخدام الكلمة الأساسية DECLARE.
- باستخدام مجموعة
- باستخدام تحديد
دعونا نلقي نظرة على الطرق الثلاث بالتفصيل:
أثناء إعلان المتغير باستخدام الكلمة الأساسية DECLARE
بناء جملة T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
هنا، بعد نوع البيانات يمكننا استخدام '=' متبوعة بالقيمة التي سيتم تخصيصها
الاستعلام:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
باستخدام SQL SET المتغير
في بعض الأحيان نريد أن نبقي الإعلان والتهيئة منفصلين. يمكن استخدام SET لتعيين قيم للمتغير، بعد الإعلان عن المتغير. فيما يلي الطرق المختلفة لتعيين القيم باستخدام SET:
مثال: تعيين قيمة لمتغير باستخدام SET
بناء الجملة:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
الاستعلام:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
مثال: تعيين قيمة ل متغيرات متعددة باستخدام مجموعة.
بناء الجملة:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
القاعدة: يمكن استخدام كلمة أساسية SET واحدة لتعيين قيمة لها فقط متغير واحد.
الاستعلام:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
مثال: تعيين قيمة لمتغير باستخدام a استعلام فرعي عددي باستخدام مجموعة
بناء الجملة:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
قواعد:
- ضع الاستعلام بين قوسين.
- يجب أن يكون الاستعلام استعلامًا قياسيًا. الاستعلام القياسي هو استعلام يحتوي على نتائج صف واحد وعمود واحد فقط. وإلا، فسيطرح الاستعلام خطأً.
- إذا قام الاستعلام بإرجاع صفوف صفرية، فسيتم تعيين المتغير إلى EMPTY، أي NULL.
افتراض: افترض أن لدينا الجدول باسم "Guru99" مع عمودين كما هو موضح أدناه:
سوف نستخدم جدول "Guru99" في الدروس الإضافية
مثال 1: عندما يقوم الاستعلام الفرعي بإرجاع صف واحد نتيجة لذلك.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
المثال 2: عندما يقوم الاستعلام الفرعي بإرجاع صف صفر نتيجة لذلك
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
في هذه الحالة بالذات، تكون قيمة المتغير فارغة، أي NULL.
باستخدام SQL SELECT المتغير
تمامًا مثل SET، يمكننا أيضًا استخدام SELECT لتعيين قيم للمتغيرات، ونشر الإعلان عن متغير باستخدام DECLARE. فيما يلي طرق مختلفة لتعيين قيمة باستخدام SELECT:
مثال: تعيين قيمة لمتغير باستخدام SELECT
بناء الجملة:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
الاستعلام:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
مثال: تعيين قيمة لمتغير متعدد باستخدام SELECT
بناء الجملة:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
قواعد: على عكس SET، يمكن استخدام SELECT لتعيين قيمة إلى متغيرات متعددة مفصولة ب فاصلة.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
مثال: تعيين القيمة لمتغير باستخدام استعلام فرعي باستخدام SELECT
بناء الجملة:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
قواعد:
- ضع الاستعلام بين قوسين.
- يجب أن يكون الاستعلام استعلامًا قياسيًا. الاستعلام القياسي هو الاستعلام الذي تكون نتيجته عبارة عن صف واحد وعمود واحد. وإلا، فسيطرح الاستعلام خطأً.
- إذا قام الاستعلام بإرجاع صفوف صفرية، فسيكون المتغير فارغًا، أي NULL.
- أعد النظر في جدول "Guru99".
مثال 1: عندما يقوم الاستعلام الفرعي بإرجاع صف واحد نتيجة لذلك.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
مثال 2: عندما يقوم الاستعلام الفرعي بإرجاع صف صفر نتيجة لذلك
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
في هذه الحالة بالذات، يكون المتغير فارغًا، أي NULL.
مثال 3: قم بتعيين قيمة لمتغير باستخدام عبارة SELECT عادية.
بناء الجملة:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
قواعد:
- على عكس SET، إذا أدى الاستعلام إلى صفوف متعددة، فسيتم تعيين قيمة المتغير على قيمة الصف الأخير.
- إذا قام الاستعلام بإرجاع صفوف صفرية، فسيتم تعيين المتغير إلى EMPTY، أي NULL.
الاستعلام 1: يقوم الاستعلام بإرجاع صف واحد.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
الاستعلام 2: يقوم الاستعلام بإرجاع صفوف متعددة.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
في هذه الحالة الخاصة، تكون القيمة المتغيرة اضبط على قيمة الصف الأخير.
الاستعلام 3: يقوم الاستعلام بإرجاع صفر صفوف.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
في هذه الحالة بالذات، يكون المتغير فارغًا، أي NULL.
أمثلة أخرى لمتغيرات SQL
استخدام المتغير في الاستعلام
الاستعلام:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
حقائق مثيرة للاهتمام حول متغيرات SQL Server!
- يمكن عرض متغير محلي باستخدام الأمر PRINT وكذلك الأمر SELECT
- نوع بيانات الجدول لا يسمح باستخدام "AS" أثناء الإعلان.
- يتوافق SET مع معايير ANSI بينما لا يتوافق SELECT.
- يُسمح أيضًا بإنشاء متغير محلي باسم @. يمكننا أن نعلنها على سبيل المثال:
'DECLARE @@ as VARCHAR (10)'
ملخص
- المتغيرات هي الكائن الذي يعمل كعنصر نائب.
- يوجد نوعان من المتغيرات: المحلية والعالمية
- يمكننا تعيين المتغير بالطرق الثلاث التالية: أثناء استخدام 1) DECLARE 2) باستخدام SET 3) باستخدام SELECT














