型別定義 (Entity SQL)

型別定義用於 Entity SQL 內嵌函式中的宣告陳述式。

備註

內嵌函式的宣告陳述式包括後面接表示函式名稱之識別項 (例如 "MyAvg") 的 FUNCTION (Entity SQL) 關鍵字,後面再接以括號括住的參數定義清單 (例如 "dues Collection(Decimal)")。

參數定義清單包括零或多個參數定義。 每個參數定義包括一個識別項 (函式參數的名稱,例如 "dues"),後面接型別定義 (例如 "Collection(Decimal)")。

型別定義可以是下面其中一項:

  • 識別項的型別 (例如 "Int32" 或 "AdventureWorks.Order")。

  • 關鍵字 COLLECTION 後面接以括號括住的其他型別定義 (例如 "Collection(AdventureWorks.Order)")。

  • 關鍵字 ROW 後面接以括號括住的屬性定義清單 (例如 "Row(x AdventureWorks.Order)")。 屬性定義的格式如 "identifier type_definition, identifier type_definition, ..."。

  • 關鍵字 REF 後面接以括號括住的識別項型別 (例如 "Ref(AdventureWorks.Order)")。 REF 型別定義運算子需要實體類型做為引數。 您不能指定基本型別做為引數。

您也可以巢狀化型別定義 (例如 "Collection(Row(x Ref(AdventureWorks.Order)))")。

型別定義的選項是:

  • IdentifierName supported_type

  • IdentifierName COLLECTION(type_definition),或

  • IdentifierName ROW(property_definition),或

  • IdentifierName REF(supported_entity_type)

屬性定義的選項是 IdentifierName type_definition

支援的型別是目前命名空間中的任何型別。 這些包括基本型別和實體類型兩者。

支援的實體類型只會參考目前命名空間中的實體類型。 不包括基本型別。

範例

下面是一個簡單的型別定義範例:

USING Microsoft.Samples.Entity
Function MyRound(p1 EDM.Decimal) AS (
   Round(p1)
)
MyRound(CAST(1.7 as EDM.Decimal))

下面是一個 COLLECTION 型別定義的範例:

USING Microsoft.Samples.Entity
Function MyRound(p1 Collection(EDM.Decimal)) AS (
   Select Round(p1) from p1
)
MyRound({CAST(1.7 as EDM.Decimal), CAST(2.7 as EDM.Decimal)})

下面是一個 ROW 型別定義的範例:

USING Microsoft.Samples.Entity
Function MyRound(p1 Row(x EDM.Decimal)) AS (
   Round(p1.x)
)
select MyRound(row(a as x)) from {CAST(1.7 as EDM.Decimal), CAST(2.7 as EDM.Decimal)} as a

下面是一個 REF 型別定義的範例。

USING Microsoft.Samples.Entity
Function UnReference(p1 Ref(AdventureWorks.Order)) AS (
   Deref(p1)
)
select Ref(x) from AdventureWorksEntities.SalesOrderHeaders as x

另請參閱

概念

Entity SQL 概觀
Entity SQL 參考