【发布时间】:2019-11-29 09:24:51
【问题描述】:
我在数据库中创建了这个TYPE 表:
CREATE TYPE [dbo].[AccessLevel] AS TABLE
(
[RoleId] [INT] NULL,
[Access] [NVARCHAR](1) NULL,
[IsDelete] [BIT] NULL
)
GO
我需要向其中插入数据,但是当我使用此代码时:
DECLARE @AccessLevel AccessLevel
INSERT INTO @AccessLevel VALUES (4, 'dfdfg', 0)
INSERT INTO @AccessLevel VALUES (4, 'dfdfg', 0)
EXEC InsertAndUpdateAccessLevel @AccessLevel
这是我的存储过程:
ALTER PROCEDURE [dbo].[InsertAndUpdateAccessLevel]
(@AccessLevel AS AccessLevel READONLY)
AS
BEGIN
INSERT INTO RoleAccess (RoleId, Access, IsDelete)
SELECT * FROM @AccessLevel
END
我收到此错误:
消息 8152,第 16 级,状态 4,第 5 行
字符串或二进制数据将被截断
有什么问题?我该如何解决这个问题?
【问题讨论】:
-
您正在尝试在
[nvarchar](1)中使用INSERT值'dfdfg'。这显然不止 1 个字符。
标签: sql sql-server