sp_sequence_get_range(Transact-SQL)
적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics
시퀀스 개체의 시퀀스 값 범위를 반환합니다. 시퀀스 개체는 요청된 값 수를 생성하고 발급하며 범위와 관련된 메타데이터를 애플리케이션에 제공합니다.
시퀀스 번호에 대한 자세한 내용은 시퀀스 번호를 참조 하세요.
구문
sp_sequence_get_range [ @sequence_name = ] N'<sequence>'
, [ @range_size = ] range_size
, [ @range_first_value = ] range_first_value OUTPUT
[, [ @range_last_value = ] range_last_value OUTPUT ]
[, [ @range_cycle_count = ] range_cycle_count OUTPUT ]
[, [ @sequence_increment = ] sequence_increment OUTPUT ]
[, [ @sequence_min_value = ] sequence_min_value OUTPUT ]
[, [ @sequence_max_value = ] sequence_max_value OUTPUT ]
[ ; ]
인수
[ @sequence_name = ] N'sequence'
시퀀스 개체의 이름입니다. 스키마는 선택 사항입니다. sequence_name nvarchar(776)입니다.
[ @range_size = ] range_size
시퀀스에서 가져올 값의 수입니다. @range_size 대단합니다.
[ @range_first_value = ] range_first_value
출력 매개 변수는 요청된 범위를 계산하는 데 사용되는 시퀀스 개체의 첫 번째(최소 또는 최대) 값을 반환합니다. @range_first_value 요청에 사용된 시퀀스 개체의 기본 형식과 동일한 기본 형식으로 sql_variant.
[ @range_last_value = ] range_last_value
선택적 출력 매개 변수는 요청된 범위의 마지막 값을 반환합니다. @range_last_value 요청에 사용된 시퀀스 개체의 기본 형식과 동일한 기본 형식으로 sql_variant.
[ @range_cycle_count = ] range_cycle_count
선택적 출력 매개 변수는 요청된 범위를 반환하기 위해 시퀀스 개체가 순환한 횟수를 반환합니다. @range_cycle_count int입니다.
[ @sequence_increment = ] sequence_increment
선택적 출력 매개 변수는 요청된 범위를 계산하는 데 사용되는 시퀀스 개체의 증분을 반환합니다. @sequence_increment 요청에 사용된 시퀀스 개체의 기본 형식과 동일한 기본 형식으로 sql_variant.
[ @sequence_min_value = ] sequence_min_value
선택적 출력 매개 변수는 시퀀스 개체의 최소값을 반환합니다. @sequence_min_value 요청에 사용된 시퀀스 개체의 기본 형식과 동일한 기본 형식으로 sql_variant.
[ @sequence_max_value = ] sequence_max_value
선택적 출력 매개 변수는 시퀀스 개체의 최대값을 반환합니다. @sequence_max_value 요청에 사용된 시퀀스 개체의 기본 형식과 동일한 기본 형식으로 sql_variant.
반환 코드 값
0(성공) 또는 1(실패)
설명
sys에서 sp_sequence_get_rangeis. 스키마를 sys.sp_sequence_get_range 참조할 수 있습니다.
순환 시퀀스
필요할 경우 시퀀스 개체는 적절한 횟수로 순환하여 요청한 범위를 처리합니다. 순환된 횟수가 매개 변수를 통해 @range_cycle_count
호출자에게 반환됩니다.
참고 항목
순환할 때 시퀀스 개체는 시퀀스 개체의 시작 값이 아니라 오름차순 시퀀스의 최소값과 내림차순 시퀀스의 최대값에서 다시 시작됩니다.
비순환 시퀀스
요청된 범위의 값 수가 시퀀스 개체의 나머지 사용 가능한 값보다 크면 요청된 범위가 시퀀스 개체에서 차감되지 않고 다음 오류 11732가 반환됩니다.
The requested range for sequence object '%.*ls' exceeds the maximum or minimum limit. Retry with a smaller range.
사용 권한
시퀀스 개체 또는 시퀀스 개체의 스키마에 대한 UPDATE 권한이 필요합니다.
예
다음 예제에서는 Test.RangeSeq라는 시퀀스 개체를 사용합니다. 다음 문을 사용하여 Test.RangeSeq 시퀀스를 만듭니다.
CREATE SCHEMA Test ;
GO
CREATE SEQUENCE Test.RangeSeq
AS int
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 25
CYCLE
CACHE 10
;
A. 시퀀스 값 범위 검색
다음 문은 Test.RangeSeq 시퀀스 개체에서 4개의 시퀀스 번호를 가져오고 숫자의 첫 번째 숫자를 사용자에게 반환합니다.
DECLARE @range_first_value_output sql_variant ;
EXEC sys.sp_sequence_get_range
@sequence_name = N'Test.RangeSeq'
, @range_size = 4
, @range_first_value = @range_first_value_output OUTPUT ;
SELECT @range_first_value_output AS FirstNumber ;
B. 모든 출력 매개 변수 반환
다음 예제에서는 sp_sequence_get_range 프로시저의 모든 출력 값을 반환합니다.
DECLARE
@FirstSeqNum sql_variant
, @LastSeqNum sql_variant
, @CycleCount int
, @SeqIncr sql_variant
, @SeqMinVal sql_variant
, @SeqMaxVal sql_variant ;
EXEC sys.sp_sequence_get_range
@sequence_name = N'Test.RangeSeq'
, @range_size = 5
, @range_first_value = @FirstSeqNum OUTPUT
, @range_last_value = @LastSeqNum OUTPUT
, @range_cycle_count = @CycleCount OUTPUT
, @sequence_increment = @SeqIncr OUTPUT
, @sequence_min_value = @SeqMinVal OUTPUT
, @sequence_max_value = @SeqMaxVal OUTPUT ;
-- The following statement returns the output values
SELECT
@FirstSeqNum AS FirstVal
, @LastSeqNum AS LastVal
, @CycleCount AS CycleCount
, @SeqIncr AS SeqIncrement
, @SeqMinVal AS MinSeq
, @SeqMaxVal AS MaxSeq ;
인수를 @range_size
75와 같은 큰 숫자로 변경하면 시퀀스 개체가 순환됩니다. @range_cycle_count
인수를 검사하여 시퀀스 개체 순환 여부와 순환 횟수를 확인하십시오.
C. ADO.NET 사용하는 예제
다음 예제에서는 ADO.NET 사용하여 Test.RangeSeq에서 범위를 가져옵니다.
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sys.sp_sequence_get_range";
cmd.Parameters.AddWithValue("@sequence_name", "Test.RangeSeq");
cmd.Parameters.AddWithValue("@range_size", 10);
// Specify an output parameter to retrieve the first value of the generated range.
SqlParameter firstValueInRange = new SqlParameter("@range_first_value", SqlDbType.Variant);
firstValueInRange.Direction = ParameterDirection.Output;
cmd.Parameters.Add(firstValueInRange);
conn.Open();
cmd.ExecuteNonQuery();
// Output the first value of the generated range.
Console.WriteLine(firstValueInRange.Value);
참고 항목
CREATE SEQUENCE(Transact-SQL)
ALTER SEQUENCE(Transact-SQL)
DROP SEQUENCE(Transact-SQL)
NEXT VALUE FOR(Transact-SQL)
시퀀스 번호
피드백
https://aka.ms/ContentUserFeedback을 참조하세요.
출시 예정: 2024년 내내 콘텐츠 피드백 메커니즘인 GitHub 문제를 단계적으로 폐지하고 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은다음에 대한 사용자 의견 제출 및 보기