У меня есть хранимая процедура в программе, которая работает неправильно.Его усеченная версия следует.Таблица MyQuotes
имеет столбец IDENTITY
с именем QuoteId
.
CREATE PROCEDURE InsertQuote
(@BinderNumber VARCHAR(50) = NULL,
@OtherValue VARCHAR(50))
AS
INSERT INTO MyQuotes (BinderNumber, OtherValue)
VALUES (@BinderNumber, @OtherValue);
DECLARE @QuoteId INT
SELECT @QuoteId = CONVERT(INT, SCOPE_IDENTITY());
IF @BinderNumber IS NULL
UPDATE MyQuotes
SET BinderNumber = 'ABC' + CONVERT(VARCHAR(10),@QuoteId)
WHERE QuoteId = @QuoteId;
SELECT @QuoteId AS QuoteId;
Мне кажется, что раздел, в котором мы получаем номер связующего из scope_identity()
, можно сделать намного, намного чище.И я думаю, что мы должны были делать это в коде C #, а не в SQL, но, поскольку этот кубик брошен, я хотел получить больше изученных мнений, чем мое собственное, о том, как вы измените этот запрос, чтобы заполнить это значение.