ForLoop.Executables 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
ForLoop 반복 동안 처리되는 실행 개체의 컬렉션을 반환합니다.
public:
property Microsoft::SqlServer::Dts::Runtime::Executables ^ Executables { Microsoft::SqlServer::Dts::Runtime::Executables ^ get(); };
public Microsoft.SqlServer.Dts.Runtime.Executables Executables { get; }
member this.Executables : Microsoft.SqlServer.Dts.Runtime.Executables
Public ReadOnly Property Executables As Executables
속성 값
Executables 컬렉션입니다.
구현
예제
다음 코드 예제에서는 ForLoop 3개의 식 속성을 만들고 설정합니다. ForLoop 루프의 컬렉션에 Executables 있는 두 개의 작업도 포함됩니다.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Tasks.SendMailTask;
using Microsoft.SqlServer.Dts.Tasks.BulkInsertTask;
namespace ForLoopAPI
{
class Program
{
static void Main(string[] args)
{
String varName = "MyVariable";
int INIT_COUNT = 2;
int MAX_COUNT = 5;
Package pkg = new Package();
Variable var = pkg.Variables.Add(varName, false, "", 0);
Variable var2 = pkg.Variables.Add("Counter", false, "", 0);
ForLoop forLoop = (ForLoop)pkg.Executables.Add("STOCK:ForLoop");
forLoop.InitExpression = "@"+varName+" = "+INIT_COUNT;
forLoop.EvalExpression = "@"+varName+" < "+MAX_COUNT;
forLoop.AssignExpression = "@" + varName + " = @" + varName + " + " + INIT_COUNT;
// Show a different syntax for setting these values.
//forLoop.InitExpression = "@Counter = 1";
//forLoop.AssignExpression = "@Counter = @Counter + 1";
//forLoop.EvalExpression = "@Counter <= 10";
// The ForLoop contains a Properties collection.
// Show how to set some properties using that collection.
forLoop.Properties["Name"].SetValue(forLoop, "ForLoop Container");
forLoop.Properties["Description"].SetValue(forLoop, "ForLoop Container");
// Review the PackagePath of the ForLoop container.
Console.WriteLine("PackagePath: {0}", forLoop.GetPackagePath());
// Because the ForLoop is a container, it can contain tasks
// that run at certain conditions.
TaskHost thLoopMail = (TaskHost)forLoop.Executables.Add("STOCK:SendMailTask");
TaskHost thLoopInsert = (TaskHost)forLoop.Executables.Add("STOCK:BulkInsertTask");
Executables loopExecs = forLoop.Executables;
Console.WriteLine("Number of Executables in ForLoop: {0}", loopExecs.Count);
// Like other containers, precedence constraints can be set on the
// contained tasks.
PrecedenceConstraint pc = forLoop.PrecedenceConstraints.Add((Executable)thLoopMail, thLoopInsert);
PrecedenceConstraints pcs = forLoop.PrecedenceConstraints;
Console.WriteLine("Number of precedence constraints: {0}", pcs.Count);
// Run the package. Because required properties on the tasks are not
// set, current sample code will fail.
DTSExecResult result = pkg.Execute();
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Tasks.SendMailTask
Imports Microsoft.SqlServer.Dts.Tasks.BulkInsertTask
Namespace ForLoopAPI
Class Program
'Entry point which delegates to C-style main Private Function
Public Overloads Shared Sub Main()
Main(System.Environment.GetCommandLineArgs())
End Sub
Overloads Shared Sub Main(args() As String)
Dim varName As String = "MyVariable"
Dim INIT_COUNT As Integer = 2
Dim MAX_COUNT As Integer = 5
Dim pkg As New Package()
Dim var As Variable = pkg.Variables.Add(varName, False, "", 0)
Dim var2 As Variable = pkg.Variables.Add("Counter", False, "", 0)
Dim forLoop As ForLoop = CType(pkg.Executables.Add("STOCK:ForLoop"), ForLoop)
forLoop.InitExpression = "@" + varName + " = " + INIT_COUNT
forLoop.EvalExpression = "@" + varName + " < " + MAX_COUNT
forLoop.AssignExpression = "@" + varName + " = @" + varName + " + " + INIT_COUNT
' Show a different syntax for setting these values.
forLoop.InitExpression = "@Counter = 1"
forLoop.AssignExpression = "@Counter = @Counter + 1"
forLoop.EvalExpression = "@Counter <= 10"
' The ForLoop contains a Properties collection.
' Show how to set some properties using that collection.
forLoop.Properties("Name").SetValue(forLoop, "ForLoop Container")
forLoop.Properties("Description").SetValue(forLoop, "ForLoop Container")
' Review the PackagePath of the ForLoop container.
Console.WriteLine("PackagePath: {0}", forLoop.GetPackagePath())
' Because the ForLoop is a container, it can contain tasks
' that run at certain conditions.
Dim thLoopMail As TaskHost = CType(forLoop.Executables.Add("STOCK:SendMailTask"), TaskHost)
Dim thLoopInsert As TaskHost = CType(forLoop.Executables.Add("STOCK:BulkInsertTask"), TaskHost)
Dim loopExecs As Executables = forLoop.Executables
Console.WriteLine("Number of Executables in ForLoop: {0}", loopExecs.Count)
' Like other containers, precedence constraints can be set on the
' contained tasks.
Dim pc As PrecedenceConstraint = forLoop.PrecedenceConstraints.Add(CType(thLoopMail, Executable), thLoopInsert)
Dim pcs As PrecedenceConstraints = forLoop.PrecedenceConstraints
Console.WriteLine("Number of precedence constraints: {0}", pcs.Count)
' Run the package. Because required properties on the tasks are not
' set, current sample code will fail.
Dim result As DTSExecResult = pkg.Execute()
End Sub 'Main
End Class 'Program
End Namespace 'ForLoopAPI
샘플 출력:
PackagePath: \Package\{8A18B94E-1176-429E-BB3D-6F3F1E0C9070}
ForLoop의 실행 파일 수: 2
선행 제약 조건 수: 1
설명
컨테이너를 포함한 ForLoop모든 컨테이너에는 컨테이너를 Executables 실행하는 동안 런타임 엔진에서 처리한 실행 개체의 컬렉션이 포함된 속성이 있습니다. 컬렉션에서 개체의 실행 순서는 컨테이너에 의해 상속되고 구현되는 개체에 의해 PrecedenceConstraints 결정됩니다.