۱۳۸۷ پنج شنبه ۱۴ آذر Skip Navigation Links
صفحه اصلی
مقالاتExpand مقالات
تازه هاExpand تازه ها
کتاب ها
فروشگاه
اعضا
فروم (سؤال و جواب)
 
 
 
کلمه عبور خود را فراموش کرده اید؟
 
آدرس ایمل مخاطب
 
 نگاهی به برخی دستورات پر کاربرد در SQL Server
Database
تاریخ ثبت:  ۸۷/۵/۱۳
تعداد نمایش:  ۱۱۲۹
 
  نویسنده: وحید رحمانی فرد
 

نگاهی به برخی دستورات پر کاربرد در  SQL Server  

در این مقاله سعی بر آن داریم تا تعدادی از دستورات پرکاربرد و مفید مانند If، Case و... را در روال­های ذخیره شده مورد بررسی قرار دهیم. بسیاری از اوقات استفاده از روال­های ذخیره شده نسبت به نوشتن دستوراتی که درون آن قرار دارد مفیدتر است. زیرا روال­های ذخیره شده از نظر گرامری یکبار برای همیشه بررسی می­شوند و هرگاه آنها را فراخوانی کنیم دیگر سربار زمانی­ای که برای چک کردن گرامر دستورات مورد نیاز است از میان برداشته می­شود. همچنین برای استفاده از تراکنش­ها استفاده از روال­های ذخیره شده گزینه­ی مناسبی به نظر می­رسد.

از اینرو استفاده از آنها در برنامه نویسی بسیار رواج دارد و برای برنامه­هایی که بر روی شبکه اجرا می­شوند استفاده از روال­های ذخیره شده مؤکداً توصیه می­شود.

در یک روال ذخیره شده می­توانید از تمامی دستورات SQL، بدون هیچ محدودیتی استفاده کنید. مضاف بر دستورات SQL می­توان از دستوراتی مانند ساختارهای کنترلی IF و CASE، ساختارهای تکرار مانند WHILE و... استفاده کنید.

ممکن است بگویید با توجه به اینکه برای کلیه موارد یاد شده در بالا در زبان­های برنامه­نویسی معادلی وجود دارد، چه الزامی است که از آنها در روال­های ذخیره شده استفاده کرد. در جواب باید گفت که استفاده از این دستورات بسیاری از اوقات باعث افرایش کارآیی شده و عمل انتقال میان برنامه و سرور بانک اطلاعاتی را کاهش می­دهد.

قبل از شروع به بررسی دستورات مورد نظر، باید توجه داشته باشید که در این مقاله از پایگاه داده Pubs که توسط SQL Server ارائه شده است استفاده می­کنیم. همچنین کلیه دستورات در SQL Server 2000 تست شده اند.

 

IF .. Else

منطق این ساختار برای کلیه برنامه نویسان روشن است. از این ساختار هنگامی استفاده می­کنیم که بخواهیم در صورت برقراری شرایطی خاصی دستورات مورد نظر ما اجرا شوند و در صورت عدم برقرار دستورات مربوطه اجرا نشوند.

فرم کلی:

IF   condition

BEGIN

                Instructions

               

                ….

END

[ELSE

BEGIN

                Instructions

               

                ….

END]

در قسمت condition می­توانید از یک دستور SELECT و یا مقداری که به عنوان پارامتر برای روال ارسال شده است استفاده نمود. روال زیر را در نظر بگیرید:

CREATE PROCEDURE test AS

IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15

BEGIN

   PRINT ' mod_cook books are very good'

END

ELSE

   PRINT 'Average title price is more than $15.'

GO

در این روال بررسی میانگین price مربوط به نوع mod_cook با عدد 15 دلار پیام لازم را با دستور PRINT چاپ می­کنیم. با اجرای روال خروجی زیر را مشاهده می­کنید.

mod_cook books are very good

این بدان معناست که در روال فوق میانگین محاسبه شده بیشتر از 15 دلار بوده است. اکنون در این روال اندکی تغییرات اعمال می­کنیم.

CREATE PROCEDURE test AS

IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15

BEGIN

                SELECT titles FROM titles WHERE  type = 'mod_cook'         

END

ELSE

   PRINT 'Average title price is more than $15.'