У меня есть хранимая процедура, которая принимает определенный пользователем тип таблицы называется dbo.NodeTableType
:SQL Server 2012 - Создание типа данных из существующей таблицы
ALTER PROCEDURE [dbo].[InsertNonExistingNode]
(@TableVariable dbo.NodeTableType READONLY)
Это кажется излишним, потому что dbo.NodeTableType
идентична реальной таблице в моя база данных dbo.Nodes
.
Должен ли я создать этот тип данных, чтобы исключить его в качестве параметра в моей хранимой процедуре?
Если ответ на # 1 есть «Да», то есть ли способ создать этот тип данных, указав его на стол? В настоящее время, я должен создать его таким образом:
CREATE TYPE NodeTableType AS TABLE (NodeTypeId SMALLINT NOT NULL, Location NVARCHAR(50) NULL, DisplayName NVARCHAR(100) NULL, AccessLevel SMALLINT NOT NULL, IsEnabled BIT NOT NULL, CreatedOn DATETIME2(7) NULL, CreatedBy NVARCHAR(150) NULL, ModifiedOn DATETIME2(7) NULL, ModifiedBy NVARCHAR(150) NULL, NativeId BIGINT NOT NULL, SourceId INT NOT NULL, Name NVARCHAR(100) NOT NULL, Alias NVARCHAR(100) NULL )
Это не так сложно создать тип из таблицы. Просто скриптируйте таблицу и сначала измените пару слов. И да, вы должны определить тип, чтобы передать его. Как еще sql знает, что это такое? –