المتغيرات هى عبارة عن عناصر يتم تحديد أو توجيه قيم إليها ، ويمكن استخدام المتغيرات الداخلية Local Variables فى ترانزاكشن سيكوال .
تعرف المتغيرات
الداخلية في لغة ترانزأكشن سيكوال من قبل المستخدم فى عبارة توضيح Declare Statements ويتم توجيه
قيم أولية إليها باستخدام عبارة Set أو عبارة Select .
يعمل المتغير
الداخلى فقط فى الباتش أو ترانزأكشن سيكوال المعرف به فقط ، ويميز المتغير الداخلى
باستخدام الرمز (@) فى بداية اسمه أو هويته .
الصيغة العامة:
يتبع إنشاء
المتغيرات الداخلية الصيغة العامة التالية :
DECLARE {@local_variable data_type} [,...n]
SET @local_variable_name = expression
مثال:
USE northwind
DECLARE
@EmpID varchar(11)
,@vlName
char(20)
SET @vlname = 'Dodsworth'
SELECT @EmpID = employeeid
FROM employees
WHERE LastName
= @vlname
SELECT @EmpID AS EmployeeID
GO
فى المثال السابق تم إنشاء متغييرين
داخليين هما @EmpID و @vlname ، وتم توجيه
قيمة للمتغير @EmpID ، ثم تم توجيه قيمة للمتغير @vlname عن طريق الاستعلام عن جدول الموظفين Employees فى قاعدة بيانات Northwind لتحديد
السجل الذى يحتوى قيمة المتغير الداخلى @vlname .
عند تنفيذ الاستعلام فى محلل
الاستعلامات Query Analyzer يتم إرجاع كود الموظف كما بالشكل التالى .
دوال النظام System Functions:
يمكن استخدام
الدوال بما فيها دوال النظام فى أى مكان فى ترانزأكشن سيكوال الذى يمد بالعديد من
الدوال التى ترجع المعلومات ، تحتاج بعض الدوال إلى معاملات إدخال Input Parameters وترجع قيم يمكن استخدامها داخل التعبيرات ، والبعض الآخر من
الدوال يرجع معلومات بدون معاملات إدخال .
يستخدم
ترانزأكشن سيكوال ثلاثة أنواع من الدوال هى الدوال الإجمالية Aggregate Functions ، والدوال المحجمة Scalar Functions ، ودوال أوضاع الصفوف Rowset Functions .
أمثلة لدوال
النظام:
يمكن أن تستخدم
دوال النظام لتغيير أو تحويل تنسيقات البيانات مثل تنسيقات التاريخ .
يعرض المثال
التالى كيفية عرض التاريخ فى تنسيقات مختلفة .
SELECT 'ANSI:', CONVERT (varchar(30), GETDATE(), 102)
AS Style
SELECT 'Japanese:', CONVERT(varchar(30), GETDATE(),
111)
SELECT 'European:', CONVERT(varchar(30), GETDATE(),
113)
GO
عند تنفيذ
المثال السابق يعرض المخرجات كما بالشكل التالى :
OUTPUT:
Style
European: 20
Nov 1998 16:44:12:857
Japanese: 11/20/98
ANSI: 1998.11.20
مثال آخر:
يستخدم المثال
التالى خيار DATEFORMAT لتحديد تنسيق عرض التاريخ
باليوم والشهر والسنة .
SET DATEFORMAT dmy
GO
DECLARE @vdate datetime
SET @vdate = '21/11/04'
SELECT @vdate
GO
يخرج المثال
عند تنفيذه النتيجة التالية .
OUTPUT:
2004-11-21 00:00:00.000
مثال آخر:
يستخدم المثال
التالى لإرجاع اسم المستخدم الحالى واسم التطبيق المستخدم لتشغيل الاستعلام الحالى
.
USE pubs
SELECT user_name(), app_name()
GO
OUTPUT:
dbo SQL
Query Analyzer