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