Получить наибольшее значение столбца в хранимой процедуре в SQLServer - PullRequest
0 голосов
/ 17 июня 2011

У меня есть следующая хранимая процедура в SQL Server

IF OBJECT_ID ('kii.p_CreateSection') IS NOT NULL
   DROP PROCEDURE kii.p_CreateSection
GO

CREATE PROCEDURE kii.p_CreateSection
    @Name AS NVARCHAR(200),
    @DocumentId AS INT,
    @TypeId AS INT = NULL,
    @ReportId AS INT = NULL,
    @OrdinalPosition AS SMALLINT
AS
    INSERT INTO kii.Section (Name, DocumentId, TypeId, ReportId, OrdinalPosition)
    VALUES (@Name, @DocumentId, @TypeId, @ReportId, @OrdinalPosition)

    SELECT SCOPE_IDENTITY();
GO

GRANT EXECUTE on kii.p_CreateSection TO p_role_kii
GO

Таблица Section связана с Document.Каждый документ имеет несколько разделов, и они упорядочены по значению OrdinalPosistion.

Я хотел бы проверить, что если заданное значение для @OrdinalPosition равно 0, то установите для него максимальное значение из всехразделы этого документа + 1.

1 Ответ

1 голос
/ 17 июня 2011
Insert kii.Section( Name, DocumentId, TypeId, ReportId, OrdinalPosition )
Select @Name, @DocumentId, @TypeId, @ReportId
    , Case
        When @OrdinalPosition <> 0 Then @OrdinalPosition
        Else    (
                Select Max( OrdinalPosition ) + 1
                From kii.Section
                Where DocumentId = @DocumentId
                )
        End
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...