Получение нового значения NREC в MS SQL 2005
Добавлено: 25 дек 2008, 14:07
Добрый день, такой вопрос. Я написал хранимую процедуру, которая парсит XML и вставляет данные в нужные таблицы Галактики. Как можно узнать значение нового Nrec до вставки в таблицы БД? Нет ли какой-либо функции по типу GetNextNrec випа? У меня написана такая процедура, для получения нрека:
Она отлично отрабатывает, получает новый уникальный нрек на текущий момент, но.. Проблема в том, что при занесении далее данных из интерфейсов Галактики в таблицу, в которую хранимой процедурой была произведена до этого вставка из XML с нреком, полученным моей функцией, создается нрек дублирующий мой и как результат - tsDuplicateKey
Подскажите, как быть, если есть идеи. Очень надо! Спасибо! Галактика - восьмерка, СУБД MS SQL 2005.
Код: Выделить всё
create procedure [dbo].[GetNextNrec]
(
@TableName varchar(44),
@NextNrec varbinary(8) output
)
as
begin
declare @OldNrec varbinary(8),
@SQLString nvarchar(80),
@Params nvarchar(30)
set @SQLString= 'select @OldNrec = max(F$NREC) from ' + TableName
set @Params= '@OldNrec varbinary(8) output'
exec sp_executesql @SQLString,
@Params ,
@OldNrec= @OldNrec output
if (@OldNrec)is null
begin
set @NextNrec = 0x800100000000000F
end
else
begin
set @NextNrec = master.dbo.GalCompAsBinary(master.dbo.BinaryAsGalComp(@OldNrec) + 1)
end
end
