Sql-Server
如何在 SQL Server 中轉換為使用者定義的類型?
SQL Server 提供了創建使用者定義類型的能力
CREATE TYPE
CREATE TYPE foo FROM int NOT NULL ;
但是,沒有提及我如何使用該類型構造值。這在 之外的任何地方都可以使用
CREATE TABLE
嗎?我沒有運氣CAST
orCONVERT
?SELECT cast(1 AS foo);
Msg 243 Level 16 State 2 Line 1 Type foo is not a defined system type.
我可以看到這些類型獨立於它們的基本類型而存在
SELECT TYPE_NAME(TYPE_ID(N'foo'));
他們放在桌子上時保持這種獨立性,
CREATE TABLE bar ( a foo ); -- will list it as `foo` and not `int` exec sp_help 'bar'
CLR 使用者定義類型可以與文件一起使用
CAST
,CONVERT
如文件中所示。從範例“我”那裡:
CREATE ASSEMBLY mytest FROM 'c:\test.dll' WITH PERMISSION_SET = SAFE; CREATE TYPE Point EXTERNAL NAME mytest.Point; GO DECLARE @p Point = CONVERT(Point, ''); SET @p.SetXY(22, 23);
您可以在Working with User-Defined Types - Manipulating UDT Data的文件中找到更多範例和使用資訊,例如
UPDATE dbo.Points SET PointValue.SetXY(5, 99) WHERE ID = 3;
別名數據類型是一種已棄用且較舊的實現。它們實際上是現有基本類型的別名,可能有限制和綁定到它們的預設值(也是不推薦使用的特性)。
我強調的CAST 文件摘錄:
data_type 目標數據類型。這包括 xml、bigint 和 sql_variant。不能使用別名數據類型。
除了表 DDL 之外,使用者定義的別名類型也可以用作局部變數:
DECLARE @v foo;