Я создал таблицу с именем 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
:
Затем он выдает ошибку:
Msg 206, Level 16, State 2, Procedure usp_InsertorUpadte, Line 2 Operand type clash: nvarchar is incompatible with account_TT
(1 row(s) affected)
Почему эта ошибка и как я могу решить проблему, вызвав ошибку?
Покажите 'exec' вы привыкли называть эту процедуру –
@Prdp я раз щелкнул и попытались его выполнением. Как и в изображении, он задал мне входной параметр – trx
. Возможно, такая же проблема, как здесь: (http://stackoverflow.com/questions/12789560/sql-server-table-type-clash-operand) – StefanR