【发布时间】:2016-12-21 07:45:11
【问题描述】:
我创建了一个名为account的表:
我还创建了一个名为account_TT的表类型:
CREATE TYPE account_TT AS TABLE
(
AccountID nvarchar(50)
)
然后我创建了一个存储过程来插入/更新帐户表中的记录:
ALTER PROCEDURE [dbo].[usp_InsertorUpadte]
@account_TT AS account_TT READONLY
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION;
MERGE dbo.[account] prj
USING @account_TT tt
ON prj.AccountID = tt.AccountID
WHEN MATCHED THEN UPDATE SET prj.CounterSeq = prj.CounterSeq+1
WHEN NOT MATCHED THEN INSERT (AccountID,CounterSeq)
VALUES (tt.AccountID, 1);
COMMIT TRANSACTION;
END
为了测试这个存储过程,我右键单击它并选择Execute Stored Procedure 并为参数@account_TT 赋值:
然后它会抛出一个错误:
消息 206,级别 16,状态 2,过程 usp_InsertorUpadte,第 2 行 操作数类型冲突:nvarchar 与 account_TT 不兼容
(受影响的 1 行)
为什么会抛出此错误,我该如何解决导致该错误的问题?
【问题讨论】:
-
显示你用来调用这个过程的
exec -
@Prdp 我只是右键单击并尝试执行它。如图所示,它问我输入参数
-
可能与此处相同的问题:(stackoverflow.com/questions/12789560/…)
标签: sql-server stored-procedures