У нас есть триггеры в таблице OSPP для сохранения определенных данных в таблице для последующего использования.
Я получаю следующую ошибку в SAP при добавлении в таблицу более одной строки за раз.
Недопустимое состояние курсора
У нас есть SQL Server 2005 SP3 (но я пробовал его на чистой установке 2005 года, на SP1 и SP2)
Один триггер:
CREATE TRIGGER [dbo].[tr_OSPP_Insert]
ON [dbo].[OSPP]
FOR INSERT
AS
BEGIN
Declare @ItemCode varchar(255)
Declare @CardCode varchar(255)
Declare @Price decimal(18,2)
Declare @ListNum bigint
Declare @ID bigint
Declare @Remote char(1)
DECLARE db_cursor CURSOR FOR
SELECT ItemCode, CardCode, Price, ListNum
FROM INSERTED
OPEN db_cursor
FETCH NEXT
FROM db_cursor INTO @ItemCode, @CardCode, @Price, @ListNum
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @Remote = isnull(U_Remote, 'N') FROM OITM WHERE ItemCode = @ItemCode
IF ltrim(rtrim(upper(@Remote))) = 'Y'
BEGIN
SELECT @ID = U_ID FROM [dbo].[@BDS_MAINTENANCE]
UPDATE [dbo].[@BDS_MAINTENANCE] set U_ID = U_ID + 1
INSERT INTO [dbo].[@BDS_REMOTESPECIALPRICELIST]
(
Code,
[Name],
U_ID,
U_ItemCode,
U_CardCode,
U_Price,
U_ListNum,
U_TransactionType,
U_Uploaded
) VALUES (
@ID,
'_' + cast(@ID as VARCHAR(50)),
@ID,
@ItemCode,
@CardCode,
@Price,
@ListNum,
1,
0
)
FETCH NEXT
FROM db_cursor INTO @ItemCode, @CardCode, @Price, @ListNum
END
CLOSE db_cursor
DEALLOCATE db_cursor
END
END
Мы также пытались:
CREATE TRIGGER [dbo].[tr_OSPP_Insert]
ON [dbo].[OSPP]
FOR INSERT
AS
BEGIN
SELECT * INTO [@TEMPTABLE222] FROM INSERTED
END
Но все равно получите ту же ошибку.
Ребята, вы понимаете, что не так?
Заранее спасибо!