تعریف چیستی پارامتر و متغیر
دو مفهوم به نام Parameter و Variable داریم. پارامتر ها و متغیر ها اشیایی هستند که برای نگهداری مقادیر از آنها میتوان اسفتاده کرد. متغیر در واقع یک فضای ذخیره سازی موقت اطلاعات میباشد.
پارامتر هم مشابه متغیر میباشد ، ولی از جنبه هایی نظیر محل استفاده با یکدیگر تفاوت دارند.
تفاوت های Parameter و Variable :
– کاربری یا Usage :
از پارامتر برای ارسال مقدار به پکیج قبل از اجرا استفاده میکنیم. از متغیر برای نگهداری مقادیر در طول اجرای پکیج استفاده میکنیم. مثلا یک کوئری مینویسیم و تاریخ امروز را به دست می آوریم. در زمان اجرای پکیج ، کامپوننت ها فقط فاکتور هایی متناظر با تاریخ موجود در این متغیر باشند استفاده میکنند و برای مثال فقط فروش را در این تاریخ محاسبه میکنند.
– حوزه اعتبار یا Scope :
پارامتر در سطح پروژه و یا پکیج قابل رویت میباشد.
فرض کنید یک پارامتر در فولدر Project.Params تعریف میکنیم. در این صورت تمامی پکیج های ما به این پارامتر و مقدار داخلش دسترسی دارند. ولی اگر پارامتری را در داخل یک پکیج تعریف کنیم ، این پارامتر فقط داخل همان پکیج قابل استفاده میباشد و سایر پکیج ها دسترسی ای به این پارامتر و مقدارش ندارند.
متغیر در سطح پروژه دیده نمیشود ، یعنی بین پکیج ها مشترک نمیباشد اما در سطح پکیج ها ، کانتینر ها ، Task Flows و Event Handling ها قابل استفاده میباشند.
– رفتار در طول اجرای پکیج (Execution Time Behavior) :
پارامتر ها در طول اجرای پکیج ها مقدارشان ثابت و غیرقابل تغییر است. یعنی در طول اجرای پکیج ، پارامتر ها Read Only هستند. اما برای متغیر ها اینگونه نیست و مقدار آنها را در طول اجرای پکیج میتوان چندین بار عوض کرد.
– پشتیبانی از انواع داده :
هنگامی که قصد تعریف متغیر یا پارامتر را داریم ، باید تعیین کنیم که این مقدار عددیست ، رشته ای است یا …
که لازم به ذکر است متغیر تمام انواع داده ای در SSIS را قبول میکند. یک نوع دیتا تایپ در SSIS داریم به نام Object ، این نوع دیتا تایپ برای نگهداری لیست ، آرایه و تعدادی رکورد مناسب است. فرض کنید میخواهیم یک SELECT بنویسیم و آخرین تاریخ ماه های سال را به دست آوریم ، برای نگهداری Output این SELECT ، دیتا تایپ آبجکت مناسب است.
در سوی دیگر اما پارامتر انواع داده ای زیادی را ساپورت میکند ، به جز DBNull ، Char و Object.
برای تعریف پارامتر در سطح پروژه ، روی فولدر Project.params کلیک کرده و وارد آن شده.
در این قسمت میتوان دیتاتایپ و Value یا همان مقدار اولیه پارامتر را مشخص کرد. Required دارای دو حالت True و False میباشد ، حالت True یعنی اگرچه پارامتر یک Default Value دارد ولی این مقدار فقط در Design Mode استفاده میشود و پس از دیپلوی پکیج در محیط عملیاتی از آن Default Value دیگر استفاده نخواهد شد و مقدار پارامتر توسط Caller(e.g. SQL Agent) باید در Runtime تامین و مشخص شود.
Sensitive هم مشخص میکند که آیا پارامتر شامل دیتای حساس میباشد یا نه که در تنظیمات خاصی به کار میرود.
برای تعریف پارامتر در پکیج ، وارد پکیج شده و به قسمت Parameters میرویم.
اکنون در پکیج XML هم پارامتری که در سطح پروژه تعریف کردیم را میبینیم هم پارامتری که در سطح پکیج تعریف کردیم.
برای تعریف متغیر ها ، وارد پکیج شده ، و روی ایکان اول در بالا سمت راست کلیک میکنیم.
در اینجا هم میتوان Scope ، تایپ داده ، مقدار اولیه و یک Expression بنویسیم.
کاربرد Expression در این است که اگر بخواهیم متغیرمان بر اساس یک فرمول خاصی مقدار گیری کند ، میتوانیم از آن استفاده کنیم و فرمول دهی کنیم.