我正在处理一个遗留数据库,其中有大量用户定义的SQL类型。我正在使用.NET编写一个方法,在SqlParameter对象中定义参数。为了正确定义这些参数并在运行时动态创建它们,我需要用户定义类型的底层SQL类型。
为此,我创建了以下过程:
(@typename sysname)
AS
SET NOCOUNT ON
SELECT distinct
st.name as UserType,
t.precision, t.max_length,
bt.name as BaseType
FROM
dbo.syscolumns c
INNER JOIN dbo.systypes st ON st.xusertype = c.xusertype
INNER JOIN dbo.systypes bt ON bt.xusertype = c.xtype
inner join sys.types t on st.name = t.name
WHERE
st.name = 'bVendor'
我想知道获取用户定义类型的基础类型是否是最佳选择?
sysname
只是nvarchar
的别名,这让你感到紧张的原因是什么? - Aaron Bertrand