고유 ID를 반환하는 저장 프로 시저가 있습니다. 각 행의 고유 ID를 얻으려면이 sp를 호출해야합니다. 응용 프로그램에서도 이것을 사용하므로이 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
수 테이블 : 나는 동안 루프이 사용 가능하다하지만 내 상황에서 내가 while 루프를 사용하는 방법을 모르는 보았다
CREATE TABLE [dbo].[Number](
[TableName] [varchar](25) NOT NULL,
[Next] [int] NULL,
[Increase] [int] NULL
.
도움이 될 수 있으면 루프를 피하십시오. 집합 기반 연산은 대개 더 빠릅니다. 일련 번호를 생성하기 위해'Row_Number()'또는 순위 함수를 살펴 보는 것이 좋겠지 만, 여기서 다시 성취하려고하는 것은 확실하지 않습니다. 신원 열을 다시 발명하려는 것 같습니다. – Bridge