در قسمت Containerها شما انواع Containerها رو دارید (کانتینر یعنی شامل شونده/ در بر گیرنده)

اولین کامپوننت این مجموعه For Loop Container هستش من میخوام از این کامپوننت استفاده کنم پس درگش میکنم تو صفحه Control Flow

For در برنامه‌نویسی برای اجرای یک تسک تکرار شونده مورد استفاده قرار می‌گیره:

الان هیچ تسکی درون این For قرار نگرفته برای اینکه بخوایم تسکی رو درون این For بذاریم باید کامپوننت مربوطه رو درون فضای این کامپوننت قرار بدیم

برای مثال اگه ما یک کامپوننت Ftp Task رو داخل این Container قرار بدیم به تعداد تکرارهای مشخص For ما این تسک تکرار میشه

تنظیمات For Loop Container

برای تنظیم این کامپوننت همانند باقی کامپوننت‌ها وارد محیط Edit می‌شویم

خب همونطور که می‌دونید For یه اتفاق ساده‌ای هستش که از ۳ قسمت تشکیل شده:

  • InitExpression = آماده‌سازی یک عبارت برای مقدارسازی پیشفرض برای استفاده در loop (اختیاری)
  • EvalExpression = عبارت محاسباتی که خروجیش به صورت Boolean بوده و مشخص میکنه حلقه الان stop بشه یا ادامه پیدا کنه
  • AssignExpresson = عبارتی که مشخص میکنه شرط نریف شده ما در Eval به چه صورت در هر بار اجرای حلقه تغییر پیدا کنه (اختیاری) 

خب همیشه ما نیاز به یک متغیر برای کنترل مقادیر کنترلی For داریم

با راست کلیک بر روی صفحه‌ی Control Flow ما view متغیرها رو باز میکنیم

در این محیط ما متغیرهای global پکیج رو تعریف می‌کنیم

من یک متغیر با نام MyVar برای این مثال تعریف می‌کنم

همونطور که می‌بینید Scope این متغیر در Package هستش یعنی شما می‌تونید به این متغیر در سطح کل پکیج دسترسی داشته باشید

در قسمت Data Type نوع این متغیر رو مشخص می‌کنید و در قسمت Value مقدار پیشفرض متغیر را اعمال می‌کنید من برای این مثال مقدار پیشفرض متغیرم رو ۱ در نظر می‌گیرم.

حالا دوباره به محیط Edit For Loop Container بر می‌گردم

در InitExprestion متغیرم رو به صورت زیر صدا میزنم:

@[NameVariable]
ex: @MyVar = 10

در EvalExprestion شرط مورد نظرم رو می‌نویسم:

@MyVar < 15

قسمت AssignExprestion بعد از اجرای هر یک گردش اجرا میشه و تو این قسمت برای اینکه حلقه رو جلو ببرم از عبارت زیر استفاده می‌کنم:

@MyVar = @MyVar + 1

مثال ما:

حالا اگه این پروژه تو محیط دیباگ ما اجرا بشه For ما اجرا میشه و از ۱۰ تا ۱۵ دقیقا ۴ بار اجرا میشه

منبع:

https://docs.microsoft.com/en-us/sql/integration-services/control-flow/for-loop-container