Как использовать блокировку чтения в хранимой процедуре SQL - PullRequest
0 голосов
/ 20 сентября 2018

Моя основная процедура - spPet_TransferPettyCashToGL.Из этой процедуры я вызываю (fnApp_GetCurrentBatchNo) функцию и получаю мой номер партии и использую его в процедуре для процесса.Перед выходом из процедуры я обновляю свою партию №.

Я хочу заблокировать свою таблицу batch no, а после обновления партии нет. Я хочу освободить эту таблицу.

Main SP:

ALTER PROCEDURE [dbo].[spPet_TransferPettyCashToGL] 
@ComCod as varchar(2),
@LocCod as varchar(2),
@PetDat as varchar(8)
AS
BEGIN
    /* Get New Batch No From Function */
    DECLARE @CurrentBatchNo as int
    EXECUTE @CurrentBatchNo = Accounts.dbo.fnApp_GetCurrentBatchNo @ComCode = @ComCod,
                                                               @LocCode = @LocCod

    /* Due to large code I ignored unnecessary areas. */

    /* UPDATE Provisional_Posting_Log  {Last Update Batch NO} */
    EXECUTE spApp_UpdateProvisionalPostingLogBatchNo @ComCod,
                                                     @LocCod,
                                                     @CurrentBatchNo
END

Функция, которая дает Batch No:

ALTER FUNCTION [dbo].[fnApp_GetCurrentBatchNo] 
(
    @ComCode varchar(2),
    @LocCode varchar(2)
)
RETURNS int
AS
BEGIN
    DECLARE @CurrentBatchNo int

    SELECT @CurrentBatchNo = (SELECT (Last_Updated_Batch_No + 1)
                                 FROM Provisional_Posting_Log
                                      WHERE Company_Code = @ComCode AND
                                            Location_Code = @LocCode)

    RETURN @CurrentBatchNo
END

SP, который обновляет batch no до полученного значения из FN выше:

ALTER PROCEDURE [dbo].[spApp_UpdateProvisionalPostingLogBatchNo]
    @ComCod as varchar(2),
    @LocCod as varchar(2),
    @CurrentBatchNo as int

AS
BEGIN
    UPDATE Provisional_Posting_Log
           SET Last_Updated_Batch_No = CAST(@CurrentBatchNo as decimal(24,0))
               WHERE Company_Code = @ComCod AND
                     Location_Code = @LocCod
END

Как я могу заблокироватьProvisional_Posting_Log таблица, когда я получаю номер партии, и как я могу выпустить его после обновления номер партии?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...