create proc ujo_get_id
@id int,
@fld varchar(30)
AS
if @id = 0
begin
begin tran
set transaction isolation level SERIALIZABLE
UPDATE ujo_next_oid set oid=oid+1 where field=@fld
SELECT oid-1 from ujo_next_oid WHERE field = @fld
commit tran
return -999
end
UPDATE ujo_next_oid set oid = @id+1 WHERE field=@fld AND oid < @id+1
SELECT @id
return -999
GO
GRANT EXECUTE ON [dbo].[ujo_get_id] TO [ujoadmin]
GO