識別碼 (SSIS)
在運算式中,識別碼是可供運算的資料行和變數。 運算式可使用一般和限定識別碼。
一般識別碼
一般識別碼是不需要額外限定詞的識別碼。 例如, AdventureWorks資料庫的 Contacts 資料表中的 MiddleName 資料行即為一般識別碼。
一般識別碼的命名必須按照下列規則:
名稱的第一個字元必須是 Unicode Standard 2.0 所定義的字母,或者底線 (_)。
後續的字元可以是 Unicode Standard 2.0 所定義的字母或數字、底線 (_)、@、$ 及 # 字元。
重要
除了列出的字元之外,內嵌的空格和特殊字元在一般識別碼中無效。 若要使用空格和特殊字元,您必須使用限定識別碼,而非一般識別碼。
限定識別碼
限定識別碼是以方括號分隔的識別碼。 識別碼可能需要分隔符號,因為識別碼的名稱包含空白,或是因為識別碼名稱的開頭不是字母或底線字元。 例如, Middle Name 資料行名稱必須以方括號限定,並於運算式中撰寫為 [Middle Name]。
如果識別碼的名稱包含空白,或如果名稱不是有效的一般識別碼名稱,則該識別碼必須加以限定。 運算式評估工具會使用左、右方括號 ([]) 限定識別碼。 方括號會放在字串的第一個和最後一個位置。 例如,識別碼 5$> 會變成 [5$>]。 方括號可用於資料行名稱、變數名稱,以及函數名稱。
如果您使用 SSIS Designer 對話方塊來建置運算式,則一般識別碼會自動加上括弧。 不過,只有在名稱包含無效字元時才需要方括號。 例如,名為 MiddleName 的資料行是有效的資料行,不需要方括號。
您無法參考運算式中包含方括號的資料行名稱。 例如,資料行名稱 Column[1] 不可用於運算式中。 若要在運算式中使用資料行,則必須將它重新命名為不含方括號的名稱。
歷程識別碼
運算式可以使用歷程識別碼來參考資料行。 當您初次建立封裝時,會自動指派歷程識別碼。 您可以在 SSIS Designer 中,於 [進階編輯器] 對話方塊的 [資料行屬性] 索引標籤上檢視資料行的譜系識別碼。
如果您使用資料行本身的歷程識別碼參考該資料行,則識別碼前面必須包含井字號 (#) 字元。 例如,歷程識別碼 147 的資料行必須以 #147 的形式參考。
如果運算式剖析成功,則運算式評估工具會以對話方塊中的資料行名稱取代歷程識別碼。
唯一資料行名稱
封裝中使用的多個元件可公開同名的資料行。 如果這些資料行是在運算式中使用,則須使其意義明確,運算式才能成功剖析。 運算式評估工具支援用來識別資料行來源的虛線標記法。 例如,兩個名為 Age 的資料行會變成 FlatFileSource.Age 和 OLEDBSource.Age,這表示其來源為 FlatFileSource 或 OLEDBSource。 剖析器會將完整名稱視為單一資料行名稱。
來源元件名稱和資料行名稱會分別加以限定。 下列範例說明,在虛線標記法中方括號的有效用法:
來源元件名稱包含空白。
[MySo urce].Age
資料行名稱的第一個字元無效。
MySource.[#Age]
來源元件和資料行名稱含有無效字元。
[MySource?].[#Age]
重要
如果虛線標記法中的兩個元素都加上一對方括號,則運算式評估工具會將這對元素解譯為單一識別碼,而非來源資料行組合。
運算式中的變數
在運算式中參考變數時,必須包括 @ 前置詞。 例如, Counter 變數是使用 @Counter 參考。 @ 字元並非變數名稱的一部份;該字元僅用來識別運算式評估工具的變數。 如果您使用 SSIS Designer 提供的對話方塊來建置運算式,則 @ 字元會自動新增至變數名稱中。 不可在 @ 字元和變數名稱之間加入空白。
變數名稱與其他一般識別碼的名稱遵循相同的規則:
名稱的第一個字元必須是 Unicode Standard 2.0 所定義的字母,或者底線 (_)。
後續的字元可以是 Unicode Standard 2.0 所定義的字母或數字、底線 (_)、@、$ 及 # 字元。
如果變數名稱包含所列出字元以外的字元,則變數必須加上方括號。 例如,含空白的變數名稱必須加上方括號。 左方括號會接在 @ 字元後面。 例如, My Name 變數會以 @[My Name] 的形式參考。 不可在變數名稱和方括號之間加入空白。
注意
使用者定義變數和系統變數的名稱會區分大小寫。
唯一變數名稱
Integration Services 支援自訂變數並提供一組系統變數。 自訂變數預設屬於 使用者 命名空間,而系統變數則屬於 系統 命名空間。 您可以為自訂變數建立額外的命名空間,並更新命名空間的名稱,以符合應用程式的需要。 運算式產生器會列出所有命名空間中適用的變數。
所有變數都有範圍且屬於命名空間。 變數擁有封裝範圍,或封裝中容器或工作的範圍。 SSIS Designer 中的運算式產生器只會列出範圍內的變數。 如需詳細資訊,請參閱 Integration Services (SSIS) 變數和在套件中使用變數。
運算式中使用的變數必須有唯一名稱,運算式評估工具才能正確評估運算式。 如果封裝使用多個同名的變數,則其命名空間必須有所區別。 Integration Services 提供由兩個冒號 (::) 組成的命名空間解析運算子,其用於以其名稱空間來限定變數。 例如,下列運算式使用兩個名稱為 Count的變數;其中一個屬於 使用者 命名空間,另一個屬於 MyNamespace 命名空間。
@[User::Count] > @[MyNamespace::Count]
重要
您必須將命名空間和限定變數名稱的組合加上方括號,運算式評估工具才能辨認該變數。
如果使用者命名空間中的Count值為 10,而MyNamespace中的Count值為 2,運算式就會評估為 true
,因為運算式評估工具會辨識兩個不同的變數。
即使變數名稱不是唯一的,也不會發生錯誤。 但運算式評估工具只會使用一個變數執行個體評估運算式,並傳回不正確的結果。 例如,下列運算式旨在比較兩個個別 Count 變數 (10 和 2 的值) ,但運算式會評估為 false
,因為運算式評估工具使用 Count 變數兩次相同的實例。
@Count > @Count
相關內容
pragmaticworks.com 上的技術文件: SSIS 運算式小抄