我有一個存儲過程返回一個唯一的ID。我需要調用這個sp來獲得每行的唯一ID。我必須使用這個SP,因爲應用程序也使用這個。如何在select語句中爲每行執行存儲過程?
如何爲每行選擇從SP返回的ID?
CREATE procedure [dbo].[SelectNextNumber]
@TableName nvarchar(255)
as
begin
declare @NewSeqVal int
set NOCOUNT ON
update Number --This is a table that holds for each table the max ID
set @NewSeqVal = Next = Next + Increase
where TableNaam= @TableName
if @@rowcount = 0
begin
Insert into Number VALUES (@TableName, 1, 1)
return 1
end
return @NewSeqVal
數表:
CREATE TABLE [dbo].[Number](
[TableName] [varchar](25) NOT NULL,
[Next] [int] NULL,
[Increase] [int] NULL
我已經看到,雖然環是本可用,但在我的情況,我不知道如何使用while循環。
儘量避免循環,如果你可以幫助它;基於集合的操作通常更快。我建議查看'Row_Number()'或排名函數來生成序列號 - 但是我不確定你想要在這裏實現什麼;聽起來像你想重新發明身份專欄。 – Bridge