دوره مجازی #C (جلسه 22): جمع بندی مطالب و آشنایی با Function ها و Procedure ها



visibility  
mode_comment   ۶

در این جلسه که جلسه ی پایانی فصل سوم می باشد، به جمع بندی مطالب و آشنایی با Function ها و Procedure ها خواهیم پرداخت. علاوه بر آن مطالبی تکمیلی در مورد مباحث جلسات قبل نیز ارائه خواهیم داد و مانند گذشته با انجام مثال های مختلف، کار خود را در این جلسه به پایان خواهیم برد.

مطالب آموزش داده شده در این جلسه به قرار زیر می باشند:

  • معرفی کلمه کلیدی in
  • معرفی دستور If
  • آشنایی با کلمه کلیدی Exists
  • نحوه ی ساخت و استفاده و کاربرد Temp Table ها
  • معرفی حلقه ی While در SQL
  • آشنایی با Procedure و نحوه ی استفاده از آن
  • معرفی Dynamic Query Execution
  • آشنایی با Function ها در SQL

در جلسه ی آینده به دنیای برنامه نویسی به زبان سی شارپ بازگشته و با آغاز فصل چهارم، به آموزش نحوه ی اتصال به پایگاه داده SQL Server در داخل برنامه های سی شارپ خواهیم پرداخت.

info توجه

این مطلب یک جلسه از دوره آموزش #C می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در دوره آموزش #C

comment دیدگاه کاربران
پژمان replyپاسخ

سلام جناب زارعی
عجیبه هنگام تایپ دستورات تعریف و مقدار دهی به متغیر اگر سمیکولون نذاری ارور نمیگیره و نتیجه درست میده. نمیدونم شما در آموزش و برای بالاتر رفتن خوانایی برنامه این رو قرارداد فرمودی یا نسخه SQLمن عجیبه!؟

در ضمن جناب زارعی الان و اتفاقی چشمم خورد تعداد کامنتهای جلسات آموزشی تا اینجا(بخصوص که الان دو سال از آموزش میگذره) به نسبت تعداد ثبت نامیها خیلی عجیبه. به نسبت سایر دوره ها. یعنی اصلا سئوالی واسه این دوستان بوجود نیومده!؟ بخصوص این دو سه جلسه اخیر که سرشار از ساب کوئریهای پیچیدس!!! . یا من خیلی پیگیرم و یا اینکه همدوره ایها دیگه حسابی استاد و آبدیده هستن. خلاصه بچه ها اگر اینجوریه دست ما رو هم بگیرید.
از شوخی گذشته اصل و بنیاد آنالیز – طراحی و پیاده سازی نرم افزارهای تحت ویندوز و وب مربوط به همین دوره سی شارپه و بس که صد البته کار هر کسی نیست و زحمت و تلاش و پیگیری فراوان و شبانه روزی میخواد. 😀

آرین زارعی

سلام.
متوجه منظورتون نمیشم. در sqlserver این مساله براتون رخ داده یا در ویژوال استودیو؟

پژمان

بله هنگام زدن کوئری در محیط sql مثل زیر:

DECLARE @MyVar INT

SET @MyVar = 3

SELECT @MyVar AS FIELD

همگی بدون گذاردن سمیکولون و بازدن دکمه Execute جواب میده!!

آرین زارعی

خب در محیط sql Server به جز یکی دو مورد خاص نیازی به قرار دادن سمیکلن نیست. اون موارد هم در کارای ما دخیل نیستن.
این جور مشکلات با یه سرچ 1 دقیقه ای حل میشن.

پژمان replyپاسخ

سلام جناب زارعی.
دو سه تا ابهام دارم ممنون میشم پاسخ بفرمایید:
1. در مثال DQE عبارت exec( ‘SELECT * FROM ‘ + @TableName + ‘ WHERE ‘ + @ColumnName + ‘ LIKE ”%” + ”’ + @PATTERN + ”’ + ”%”’) نحوه چیدمان کوتیشن های دور و بر متغیر PATTERN رو نمیفهمم. مگر شما در ابتدای این فصل نفرمودی در SQL برخلاف سی شارپ که رشته هادر دابل کوتیشن و حروف در سینگل کوتیشن قرار دارند ولی اینجا همگی در سینگل کوتیشن قرار میگیرند. پس چرا اینجا اینجوری شده!!؟؟ در مثال قبلی فیلم این بخش شما علامت های درصد و کلمه PATTERN رو هر کدوم درون یک سینگل کوتیشن قرار دادی ولی اینجا اتفاق دیگری افتاده؟
2. شما در استفاده از INNER JOIN فرمودی باید بین تیبلهای استفاده شده یا VIEW ها فرقی نمیکنه ارتباط منطقی وجود داشته باشه تا بشه INNER JOIN زد بینشون پس چرا در مثال TEMPTABLE شما از INNER JOIN استفاده کردی. هر چند من از RIGHT JOIN استفاده کردم هم درست بود. ولی آخرش ما این مفهوم تفاوت JOIN را نفهمیدم.
INNER JOIN SELLFACTOR.MONTH(DATEOFSELL) = #TEMPTABLE.ID
3. من لزوم استفاده از تمپ تیبل رو متوجه نمیشم.
در ضمن در مثالها هر جا تمپ تیبل بود بجاش ویو استفاده کردم با کمی نغیرات دور و برش به جواب رسیدم پس لزوم تعریف تمپ تیبل در کجاست؟ به هر حال هر دو اطلاعات رو بصورت دائم برای ما ذخیره میکنند.

ممنون از شما

آرین زارعی

سلام.
1 . توجه بفرمایید که اگر بخواهیم داخل یک رشته، که با سینگل کوتیشن از دو طرف مشخص می شود در اس کیو ال، علامت سینگل کوت رو به کار ببریم، باید دو تا سینگل کت بزنیم پشت هم تا متوجه بشود منظورمان این است که خود سینگل کوت رو داخل رشته بزار و نه اینکه رشته را ببند. اگر به این نکته توجه بفرمایید و کمی تامل کنید ساختار رو متوجه میشید. این مساله در تمام محیط ها و زبان ها غالبا وجود داره
2. در بحث inner join شما باید join را روی مثلا دو ستون بزنید که بینشون رابطه ای در نظر گرفتید. خیلی در کاربرد پیش نمیاد که بین دو ستون که هیچ ربطی به هم ندارند و با هم رابطه منطقی ندارند، join بزنید. در مثال هایی ممکن هست right , left , inner join خروجی یکسانی بدهند. به مثال بستگی داره. به ویژه در جاهایی که یه سری از نمونه ها در رابطه شرکت ندارند. یا به عبارتی رابطه الزامی نیست.
3. اصلا اینطوری که میگید نیست. کاملا اشتباه متوجه شدید. اگر دقت بفرمایید گفته شده در جاهای مختلف. view در اصل در هیچ کجا داده رو ذخیره نمیکنه و با هر بار فراخوانی ساخته میشه. ولی temp table ذخیره میشه. برای کارایی که فراخوانی توش زیاده بهتره از temp table استفاده بشه. من دقیقا این مثالی رو که میگید خاطرم نیست ولی میدونم در اینجا هدف آموزش Temp table بود و ممکن هست شما از راه های مختلف بتونید مشکل رو برطرف کنید.

ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.