我正在使用具有大量用户定义SQL类型的遗留数据库。我在.NET中编写了一个方法,在该方法中,我在SqlParameter对象中定义了参数。我需要用户定义类型的底层SQL类型,以便在运行时动态创建参数时正确定义参数。查找用户定义类型的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,它是一个奇怪的选择作为输入类型。当我传入一个字符串时它似乎工作正常,但它让我有点紧张。 –
'sysname'只是'nvarchar'的别名,这会让你紧张吗? –