これは私のスカラー関数です:
ALTER FUNCTION [dbo].[GetInstrumentID]
(
@ParentDocumentID int
)
RETURNS varchar(14)
AS
BEGIN
Declare @InstrumentID varchar(14) = ''
Declare @FilingNumber int = 0
Select @InstrumentID = InstrumentID
From Documents
Where DocumentID = @ParentDocumentID
Select Top 1 @FilingNumber = FilingNumber
From Documents Where ParentDocumentID = @ParentDocumentID
Order By FilingNumber desc
Set @InstrumentID = Left(@InstrumentID,9) + Right(
'000' + Cast((IsNull(@FilingNumber,1) + 1) as varchar(3))
, 3) + '00'
Return @InstrumentID
END
何百人ものユーザーがこの関数を呼び出すと心配ですが、それらの多くが同じ戻り値を受け取る可能性はありますか? はいの場合、一度に1人のユーザーのみがこの関数を実行し、残りのユーザーが待機するようにするにはどうすればよいですか?