Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 具有默认值的SQL Server自定义非null数据类型正在返回null_Sql Server - Fatal编程技术网

Sql server 具有默认值的SQL Server自定义非null数据类型正在返回null

Sql server 具有默认值的SQL Server自定义非null数据类型正在返回null,sql-server,Sql Server,我想知道为什么,当我在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 @Prov

我想知道为什么,当我在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

MSDN:-

[@objname=]'对象名称'

要将默认值绑定到的表和列的名称或别名数据类型。对象名称为nvarchar(776),没有默认值无法使用varchar(max)、nvarchar(max)、varbinary(max)、xml或CLR用户定义类型定义对象名称


链接:

这只是
默认对象的性质,它只适用于列。声明“当绑定到列或别名数据类型时,默认值指定在插入期间未显式提供值时,要插入到对象绑定到的列(或在别名数据类型的情况下插入到所有列)中的值。”。无法为变量指定默认值。另外值得注意的是,
CREATE DEFAULT
已被弃用,因此您可能应该避免同时使用它。尽管它不是CLR用户定义的类型,所以这似乎不相关
sp_bindefault
对于OP来说运行良好,并且完全按照它应该做的去做。问题是,将默认值应用于变量不是它所做的事情之一,也不是可以做的事情。