2017-02-17 1 views
5

Я хотел бы знать, почему, когда я создаю пользовательский тип данных в SQL Server, на основе не целого числа, и я назначаю его по умолчанию value, я не могу получить это значение, если это не определение таблицы (только одна объявленная переменная). Вот мой код:Неверный тип данных 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

+2

Это просто природа объекта 'default', это относится только к столбцам. [MSDN] (https://msdn.microsoft.com/en-us/library/ms173565.aspx) состояния * «При привязке к столбцу или типу данных псевдонима по умолчанию задается значение, которое нужно вставить в столбец, чтобы который объект привязан (или ко всем столбцам, в случае типа данных псевдонимов), когда значение не указано явно во время вставки. * ". Невозможно указать значение по умолчанию для переменной. Также стоит отметить, что 'CREATE DEFAULT' устарел, поэтому вам, вероятно, следует избегать использования всего этого. – GarethD

ответ

0

MSDN: -

[@ ObjName =] 'object_name'

Является ли имя таблицы и столбца или псевдоним типа данных к которому должно быть привязано значение по умолчанию. object_name - nvarchar (776) без значения по умолчанию. object_name не может быть определено с varchar (max), nvarchar (max), varbinary (max), xml или CLR user-defined types.

Ссылка: https://msdn.microsoft.com/en-us/library/ms177503.aspx

+0

Это не определенный пользователем CLR **, поэтому это не кажется актуальным. 'sp_bindefault' отлично работает для OP и делает именно то, что ему нужно. Проблема в том, что применение значения по умолчанию к переменной не является одной из вещей, которые она делает, и это не то, что можно сделать. – GarethD

 Смежные вопросы

  • Нет связанных вопросов^_^