kals84 Ответов: 2

Количество транзакций после выполнения указывает на несоответствие числа begin и commit


Привет,
Я пытаюсь вставить новую запись в sql server с помощью SP.
Мне нужен last_increment_id после команды insert. но это производит ошибку
Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1.


Пожалуйста помочь

Sql - SP
USE [db_my_database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[data_add]
	@ID int OUTPUT,
	@TYPEID int = null OUTPUT,
	@name nvarchar(50),
	@code nvarchar(50),
	@type nvarchar(50)
AS
BEGIN transaction
	SET NOCOUNT ON
	SET @TYPEID = (select id from category where name = @type)

	insert into mytable(name, code, type)
	values (@name, @code, @TYPEID)
	SET @ID = IDENT_CURRENT('mytable')
        RETURN @ID
commit transaction

if @@error <> 0
	begin
	ROLLBACK transaction
end


VB.Net Код -
Dim command As SqlCommand = New SqlCommand("data_add", conn)
command.CommandType = CommandType.StoredProcedure
command.Parameters.Add("@ID", SqlDbType.Int).Direction = ParameterDirection.Output
command.Parameters.Add("@name", SqlDbType.NVarChar).Value = "name here"
command.Parameters.Add("@code", SqlDbType.NVarChar).Value = "code here"
command.Parameters.Add("@type", SqlDbType.NVarChar).Value = "type here"
command.ExecuteNonQuery()

2 Ответов

Рейтинг:
1

Rai Pawan

Привет
Пожалуйста, имейте в виду, что вы вызываете оператор RETURN перед инструкцией commit transaction, поэтому ваш оператор commit transaction никогда не будет выполнен. Вы должны знать, что включение оператора return подразумевает, что он безоговорочно выходит из запроса или процедуры

С уважением
Паван


Рейтинг:
1

Member 14002735

Недопустимое имя объекта "TET_to_bank_for_fee".
Количество транзакций после выполнения указывает на несоответствие числа операторов BEGIN и COMMIT. Предыдущий отсчет = 0, Текущий отсчет = 1.


Richard Deeming

Если вы хотите задать вопрос, то ЗАДАВАТЬ ВОПРОС[^].

НЕ разместите свой вопрос как "решение" на чей-то другой вопрос!