ترانزاكت-إس كيو إل
لغة Transact-SQL ( T-SQL ) هي امتداد خاص بشركتي مايكروسوفت وسايبيس للغة SQL (لغة الاستعلامات البنيوية) المستخدمة للتفاعل مع قواعد البيانات العلائقية . تُوسّع T-SQL معيار SQL ليشمل البرمجة الإجرائية ، والمتغيرات المحلية ، ووظائف دعم متنوعة لمعالجة النصوص، ومعالجة التواريخ، والعمليات الحسابية، وما إلى ذلك، بالإضافة إلى تغييرات في عبارات DELETE و UPDATE .
تُعد لغة Transact-SQL أساسية لاستخدام Microsoft SQL Server . فجميع التطبيقات التي تتواصل مع مثيل SQL Server تفعل ذلك عن طريق إرسال عبارات Transact-SQL إلى الخادم، بغض النظر عن واجهة المستخدم الخاصة بالتطبيق.
الإجراءات المخزنة في SQL Server هي إجراءات تنفيذية من جانب الخادم. وتكمن ميزة الإجراءات المخزنة في إمكانية تمرير المعاملات.
المتغيرات
توفر لغة Transact-SQL العبارات التالية لتعريف وتعيين المتغيرات المحلية: DECLARE، SETو SELECT.
DECLARE @var1 NVARCHAR ( 30 ); SET @var1 = 'Some Name' ; SELECT @var1 = Name FROM Sales . Store WHERE CustomerID = 100 ;التحكم في التدفق
تتضمن الكلمات الرئيسية للتحكم في التدفق في لغة Transact-SQL ما يلي: و BEGIN، ENDو BREAK، CONTINUEو GOTO، IFو ELSE، و، و .RETURNWAITFORWHILE
IFويتيح ELSEهذا الأمر تنفيذًا مشروطًا. سيطبع هذا الأمر عبارة "إنه يوم عطلة نهاية الأسبوع" إذا كان التاريخ الحالي يوم عطلة نهاية الأسبوع، أو عبارة "إنه يوم من أيام الأسبوع" إذا كان التاريخ الحالي يوم من أيام الأسبوع. (ملاحظة: يفترض هذا الكود أن يوم الأحد مُحدد كأول يوم في الأسبوع في الإعدادات @@DATEFIRST).
إذا كان DATEPART ( dw , GETDATE ()) = 7 أو DATEPART ( dw , GETDATE ()) = 1 اطبع 'إنه يوم عطلة نهاية الأسبوع.' ; وإلا اطبع 'إنه يوم من أيام الأسبوع.' ;BEGINوقم ENDبتحديد مجموعة من العبارات . إذا كان الشرط في المثال أعلاه يتحكم في أكثر من عبارة، فيمكننا استخدام BEGINو ENDعلى النحو التالي:
إذا كان DATEPART ( dw , GETDATE ()) = 7 أو DATEPART ( dw , GETDATE ()) = 1 ، فابدأ بطباعة 'إنه يوم عطلة نهاية الأسبوع.' ؛ اطبع 'استمتع ببعض الراحة في عطلة نهاية الأسبوع!' ؛ انتهى ؛ وإلا فابدأ بطباعة 'إنه يوم من أيام الأسبوع.' ؛ اطبع 'اذهب إلى العمل في يوم من أيام الأسبوع!' ؛ انتهى ؛WAITFORسينتظر البرنامج لفترة زمنية محددة، أو حتى وقت معين من اليوم. يمكن استخدام هذه العبارة للتأخير أو لإيقاف التنفيذ حتى الوقت المحدد.
RETURNيُستخدم للعودة فورًا من إجراء أو دالة مخزنة .
BREAKيُنهي هذا الأمر الحلقة المُحيطة WHILE، بينما CONTINUEيُؤدي إلى تنفيذ التكرار التالي للحلقة. WHILEيُوضح المثال التالي مثالاً على حلقة.
DECLARE @i INT ; SET @i = 0 ;طالما أن @i < 5 ابدأ اطبع 'مرحباً بالعالم.' ؛ عيّن @i = @i + 1 ؛ انتهى ؛تغييرات على عبارات DELETE و UPDATE
في لغة Transact-SQL، تم تحسين كل من عبارات DELETEو UPDATEلتمكين استخدام البيانات من جدول آخر في العملية، دون الحاجة إلى استعلام فرعي:
DELETEيقبل هذا الشرط الجداول المدمجةFROM، على غرار ما سبقSELECT. عند القيام بذلك، يتم وضع اسم أو اسم مستعار الجدول الذي سيتم حذفه من عملية الدمج بينDELETEوFROM.UPDATEيسمحFROMبإضافة شرط. يمكن ربط الجدول المراد تحديثه فيFROMالشرط والإشارة إليه باسم مستعار، أو الإشارة إليه فقط في بداية العبارة وفقًا لمعيار SQL.
يحذف هذا المثال جميع usersالأشخاص الذين تم وضع user_flagsعلامة "خامل" عليهم في الجدول.
احذف u من جدول المستخدمين باسم u مع ربط داخلي بجدول أعلام المستخدمين باسم f بناءً على u.id = f.id حيث f.name = ' idle ' ؛إدخال بالجملة
BULKهي عبارة في لغة Transact-SQL تُنفّذ عملية تحميل بيانات مجمعة، حيث تُدرج عدة صفوف في جدول، وتقرأ البيانات من ملف تسلسلي خارجي. BULK INSERTيُحسّن استخدامها الأداء مقارنةً بالعمليات التي تُصدر INSERTعبارات منفصلة لكل صف مُراد إضافته. تتوفر تفاصيل إضافية في MSDN .
حاول الإمساك
ابتداءً من SQL Server 2005، [ 1 ] قدمت مايكروسوفت TRY CATCHمنطقًا إضافيًا لدعم سلوك أنواع الاستثناءات. يُمكّن هذا السلوك المطورين من تبسيط التعليمات البرمجية الخاصة بهم والاستغناء عن @@ERRORالتحقق بعد كل عبارة تنفيذ SQL.
-- بدء المعاملة BEGIN TRAN ;ابدأ المحاولة -- نفّذ كل عبارة INSERT INTO MYTABLE ( NAME ) VALUES ( 'ABC' ); INSERT INTO MYTABLE ( NAME ) VALUES ( '123' );-- تنفيذ المعاملة COMMIT TRAN ; END TRY BEGIN CATCH -- التراجع عن المعاملة بسبب خطأ ROLLBACK TRAN ; END CATCH ;انظر أيضاً
مراجع
- ↑ "تحسينات T-SQL في SQL Server 2012" ، جوناثان ألين، 19 مارس 2012، infoq.com
روابط خارجية
- SQL
- لغات البرمجة التي تركز على البيانات
