我想知道为什么在SQL Server中创建一个基于非空整数的自定义数据类型,并将其分配给默认值时,如果它不是表定义(只是单个声明的变量),我无法获取此值。
以下是我的代码:
它返回
以下是我的代码:
BEGIN TRAN;
GO
CREATE TYPE Province FROM INT NOT NULL;
GO
CREATE DEFAULT ProvinceDefault AS 4;
GO
EXEC sp_bindefault
'ProvinceDefault',
'Province';
GO
DECLARE @Province Province;
SELECT @Province;
GO
ROLLBACK TRAN;
它返回
NULL
。
DEFAULT
对象的本质,它仅适用于列。MSDN指出:“当绑定到列或别名数据类型时,默认值指定要插入到对象绑定的列(或在别名数据类型的情况下插入到所有列)中的值,在插入期间未明确提供值。”无法为变量指定默认值。值得注意的是,CREATE DEFAULT
已被弃用,因此最好完全避免使用它。 - GarethD