共用方式為


識別碼 (SSIS)

在運算式中,識別碼是可供運算的資料行和變數。運算式可使用一般和限定識別碼。一般識別碼是不需要額外限定詞的識別碼。例如,AdventureWorks 資料庫的 Contacts 資料表中的 MiddleName 資料行即為一般識別碼。限定識別碼是以方括號分隔的識別碼。識別碼可能需要分隔符號,因為識別碼的名稱包含空白,或是因為識別碼名稱的開頭不是字母或底線字元。例如,Middle Name 資料行名稱必須以方括號限定,並於運算式中撰寫為 [Middle Name]。

封裝可包含公開 (Expose) 相同名稱資料行的資料來源。為了讓資料行意義明確,運算式評估工具支援以來源名稱限定資料行名稱的虛線標記法。例如,如果來源名稱為 GetGeographyData,而資料行名稱為 GeographyKey,便可使用 GetGeographyData.GeographyKey 來參考資料行。

封裝可擁有多個同名的變數,只要這些變數分屬不同的命名空間即可。運算式評估工具提供命名空間解析運算子,可藉由命名空間識別變數。如需詳細資訊,請參閱<語法 (SSIS)>。

一般識別碼

一般識別碼的命名必須按照下列規則:

  • 名稱的第一個字元必須是 Unicode Standard 2.0 所定義的字母,或者底線 (_)。
  • 後續的字元可以是 Unicode Standard 2.0 所定義的字母或數字、底線 (_)、@、$ 及 # 字元。
ms140285.note(zh-tw,SQL.90).gif重要事項:
除了列出的字元之外,內嵌的空格和特殊字元在一般識別碼中無效。若要使用空格和特殊字元,您必須使用限定識別碼,而非一般識別碼。

限定識別碼

如果識別碼的名稱包含空白,或如果名稱不是有效的一般識別碼名稱,則該識別碼必須加以限定。運算式評估工具會使用左、右方括號 ([]) 限定識別碼。方括號會放在字串的第一個和最後一個位置。例如,識別碼 5$> 會變成 [5$>]。方括號可用於資料行名稱、變數名稱,以及函數名稱。

如果您使用 SSIS 設計師對話方塊建立運算式,則一般識別碼會自動加上方括號。不過,只有在名稱包含無效字元時才需要方括號。例如,名為 MiddleName 的資料行是有效的資料行,不需要方括號。

您無法參考運算式中包含方括號的資料行名稱。例如,資料行名稱 Column[1] 不可用於運算式中。若要在運算式中使用資料行,則必須將它重新命名為不含方括號的名稱。

歷程識別碼

運算式可以使用歷程識別碼來參考資料行。當您初次建立封裝時,會自動指派歷程識別碼。您可以在 SSIS 設計師中,於 [進階編輯器] 對話方塊的 [資料行屬性] 索引標籤上檢視資料行的歷程識別碼。

如果您使用資料行本身的歷程識別碼參考該資料行,則識別碼前面必須包含井字號 (#) 字元。例如,歷程識別碼 147 的資料行必須以 #147 的形式參考。

如果運算式剖析成功,則運算式評估工具會以對話方塊中的資料行名稱取代歷程識別碼。

唯一資料行名稱

封裝中使用的多個元件可公開同名的資料行。如果這些資料行是在運算式中使用,則須使其意義明確,運算式才能成功剖析。運算式評估工具支援用來識別資料行來源的虛線標記法。例如,兩個名為 Age 的資料行會變成 FlatFileSource.AgeOLEDBSource.Age,這表示其來源為 FlatFileSource 或 OLEDBSource。剖析器會將完整名稱視為單一資料行名稱。

來源元件名稱和資料行名稱會分別加以限定。下列範例說明,在虛線標記法中方括號的有效用法:

  • 來源元件名稱包含空白。

    [MySo urce].Age
    
  • 資料行名稱的第一個字元無效。

    MySource.[#Age]
    
  • 來源元件和資料行名稱含有無效字元。

    [MySource?].[#Age]
    
ms140285.note(zh-tw,SQL.90).gif重要事項:
如果虛線標記法中的兩個元素都加上一對方括號,則運算式評估工具會將這對元素解譯為單一識別碼,而非來源資料行組合。

運算式中的變數

在運算式中參考變數時,必須包括 @ 前置詞。例如,Counter 變數是使用 @Counter 參考。@ 字元並非變數名稱的一部份;該字元僅用來識別運算式評估工具的變數。如果您使用「SSIS 設計師」提供的對話方塊建立運算式,則 @ 字元會自動加入變數名稱中。不可在 @ 字元和變數名稱之間加入空白。

變數名稱與其他一般識別碼的名稱遵循相同的規則:

  • 名稱的第一個字元必須是 Unicode Standard 2.0 所定義的字母,或者底線 (_)。
  • 後續的字元可以是 Unicode Standard 2.0 所定義的字母或數字、底線 (_)、@、$ 及 # 字元。

如果變數名稱包含所列出字元以外的字元,則變數必須加上方括號。例如,含空白的變數名稱必須加上方括號。左方括號會接在 @ 字元後面。例如,My Name 變數會以 @[My Name] 的形式參考。不可在變數名稱和方括號之間加入空白。

ms140285.note(zh-tw,SQL.90).gif附註:
使用者自訂變數和系統變數的名稱會區分大小寫。

唯一變數名稱

Integration Services 支援自訂變數並提供一組系統變數。依預設,自訂變數屬於 User 命名空間,而系統變數則屬於 System 命名空間。您可以為自訂變數建立額外的命名空間,並更新命名空間的名稱,以符合應用程式的需要。運算式產生器會列出所有命名空間中適用的變數。

所有變數都有範圍且屬於命名空間。變數擁有封裝範圍,或封裝中容器或工作的範圍。SSIS 設計師中的運算式產生器只會列出範圍內的變數。如需詳細資訊,請參閱<Integration Services 變數>和<在封裝中使用變數>。

運算式中使用的變數必須有唯一名稱,運算式評估工具才能正確評估運算式。如果封裝使用多個同名的變數,則其命名空間必須有所區別。Integration Services 提供由兩個冒號 (::) 組成的命名空間解析運算子,用於以命名空間限定變數。例如,下列運算式使用兩個名為 Count 的變數;其中一個屬於 User 命名空間,另一個屬於 MyNamespace 命名空間。

@[User::Count] > @[MyNamespace::Count]
ms140285.note(zh-tw,SQL.90).gif重要事項:
您必須將命名空間和限定變數名稱的組合加上方括號,運算式評估工具才能辨認該變數。

如果 User 命名空間中 Count 的值為 10,而 MyNamespaceCount 的值為 2,則運算式會評估為 true,因為運算式評估工具能辨認這兩個不同的變數。

即使變數名稱不是唯一的,也不會發生錯誤。但運算式評估工具只會使用一個變數執行個體評估運算式,並傳回不正確的結果。例如,下列運算式是要用來比較兩個個別的 Count 變數的值 (10 和 2),但運算式會評估為 false,因為運算式評估工具使用相同的 Count 變數執行個體兩次。

@Count > @Count

請參閱

其他資源

Integration Services 運算式概念

說明及資訊

取得 SQL Server 2005 協助