在指令碼元件中使用變數
變數會儲存封裝及其容器、工作與事件處理常式在執行階段所能使用的值。 如需詳細資訊,請參閱 Integration Services (SSIS) 變數。
您可以在文稿轉換編輯器的 [腳本] 頁面的 ReadOnlyVariables
和 ReadWriteVariables
字段中輸入逗號分隔的變數清單,讓現有的變數可供只讀或讀取/寫入存取。 請記住變數名稱有區分大小寫。 Value
使用屬性來讀取和寫入個別變數。 當指令碼在執行階段操作變數時,指令碼元件會在幕後處理任何所需的鎖定。
重要
的集合 ReadWriteVariables
只能在方法中使用 PostExecute
,以將效能最大化,並將鎖定衝突的風險降到最低。 因此您無法在處理每一列資料時,直接增量封裝變數值。 請改為遞增局部變數的值,並在處理所有數據之後,將封裝變數的值設定為方法中 PostExecute
局部變數的值。 您也可以使用 VariableDispenser 屬性,以解決這個限制,如本主題稍後所述。 不過,在處理每個資料列時直接寫入封裝變數,將會對效能產生負面的影響,並增加鎖定衝突的風險。
如需 [指令碼轉換編輯器] 之 [指令碼] 頁面的詳細資訊,請參閱在指令碼元件編輯器中設定指令碼元件和指令碼轉換編輯器 (指令碼頁面)。
腳本元件會在項目專案中建立集合 Variables
類別 ComponentWrapper
,其中包含強型別存取子屬性,以取得每個預先設定變數的值,其中屬性的名稱與變數本身相同。 這個集合是透過 Variables
類別的 ScriptMain
屬性公開。 存取子屬性會提供適當的唯讀或是讀取/寫入權限給變數值。 例如,如果您已將名為 MyIntegerVariable
的 ReadOnlyVariables
整數變數新增至清單,您可以使用下列程式代碼來擷取腳本中的值:
Dim myIntegerVariableValue As Integer = Me.Variables.MyIntegerVariable
您也可以使用透過呼叫 Me.VariableDispenser
來存取的 VariableDispenser 屬性,以使用指令碼元件中的變數。 在這種情況下,您不是為變數使用具類型和具名的存取子屬性,而是直接存取變數。 在使用 VariableDispenser時,您必須在自己的程式碼中處理變數值的鎖定語意和資料類型的轉換。 如果您想要使用在設計階段無法使用,但是會在執行階段以程式設計方式建立的變數,就必須使用 VariableDispenser 屬性,而不是具名與具類型的存取子屬性。
使用 Integration Services 保持最新狀態
如需來自Microsoft的最新下載、文章、範例和影片,以及來自社群的所選解決方案,請流覽 MSDN 上的 Integration Services 頁面:
流覽 MSDN 上的 Integration Services 頁面
如需這些更新的自動通知,請訂閱頁面上可用的 RSS 摘要。