T-SQL中的结构类型

时间:2015-06-07 08:56:27

标签: sql-server tsql sqldatatypes

据我所知,SQL Server不支持包含其他类型的结构类型, 例如,你不能做这样的事情

create type User as(UserId int, Name varchar(10), Address varchar(255))

然后使用它:

declare @user User
set @user.UserId = 10
...

也许有人知道任何有助于模拟这种行为的库/框架,例如它可以是一些使用XML数据类型来保存其值并检索它们的函数。

我试图解决的问题是在存储过程之间传递大量参数。我有接受近30个参数的程序,而不是将一些逻辑和路径这个参数传递给另一个程序,然后第二个程序为第三个程序制作一些逻辑和路径参数。然后需求发生变化,新参数应添加到所有程序中。对于结构数据类型,它转换为仅在数据类型中添加新字段。另一个优点是可读性。

1 个答案:

答案 0 :(得分:5)

美好的一天,

我的第一个猜测是你需要用户定义的表类型,如其他提到的那样。但无论如何你错了,你可以创建包含其他类型的新类型。例如,我使用“复数”类型,我使用SQLCLR创建。

您可以在此处看到一个简单的代码: http://www.codeproject.com/Articles/15651/Creating-User-Defined-Data-Types-in-SQL-Server

  

这不是我使用的代码:-)我现在只在Google上找到它。

为了澄清,“复数”是由2个​​简单的十进制数构成的,这意味着我们使用两种类型来创建用户定义的数据类型: - )

  

我也使用其他类型,例如另一种类型是BIGBIGINT。我有一个非常大的表需要比BIGINT更大的整数...我创建了另一个使用两种BIGINT类型的BIGBIGINT类型。

我希望这很有用: - )