Yanko1978 Ответов: 1

Хранимая процедура получает ошибку при выполнении в VB


Привет, моя хранимая процедура получает ошибки при выполнении из VB " счетчик транзакций после выполнения указывает на несоответствие статусов Begin и Commit, previouse count =0, current count =1,

Что я уже пробовал:

ALTER PROCEDURE [dbo].[SMlineUpdate3]
(
	@id [int],
	@Payroll_Id [int],
	@ProductCode  nvarchar(255),
	@Description nvarchar (255),
	@Qty  nvarchar(255)
)
AS
IF EXISTS(SELECT Id from Smline where @id = Id)
		DECLARE @User INT
BEGIN TRANSACTION

Update dbo.SmLine
	Set [Payroll_Id]= @Payroll_Id
,ProductCode= @ProductCode
,Description = @Description
,Qty = @Qty
	
 Where [Id]=@Id 
IF @@ERROR <> 0
BEGIN      
    ROLLBACK     
    RETURN 
END 
ELSE

BEGIN TRANSACTION 
DECLARE @SId INT

INSERT INTO SmLine ([Payroll_Id],[ProductCode],[Description],[Qty]) VALUES (@Payroll_Id,@ProductCode ,@Description,@Qty)

SET @SId= SCOPE_IDENTITY() 
IF @@ERROR <> 0
BEGIN      
    ROLLBACK     
    RETURN 
END   

COMMIT

RedDk

Вы начинаете сделку, которая никогда не заканчивается ... это очень просто и легко заметить. Используйте справку BOL, доступную под {?} используемой версии SSMSE.

1 Ответов

Рейтинг:
1

F-ES Sitecore

У вас есть начало в начале sp и начало в начале ELSE, и только один коммит внизу. Либо зафиксируйте его внутри ELSE, либо удалите BEGIN для того, кто находится в ELSE, в зависимости от того, что соответствует вашим требованиям.