我有一个存储过程返回一个唯一的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