sp_sequence_get_range (Transact-sql)

Sıra değer aralığı, bir sıra nesnesi döndürür. Sıra nesnesi oluşturur ve istenen değerlerin sayısını verir ve uygulama aralığı ilgili meta verileri sağlar.

Sıra numaraları hakkında daha fazla bilgi için bkz: Sıra numaraları.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

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 ]
    [ ; ]

Bağımsız değişkenler

  • @ sequence_name =] N'sequence'
    Sıra nesnesinin adı. Şema opsiyoneldir. sequence_nameis nvarchar(776).

  • @ range_size =]range_size
    Serisinden getirmek için değerleri sayısı. @ range_size olan bigint.

  • @ range_first_value =]range_first_value
    İsteğe bağlı çıkış parametresi, istenen aralığı hesaplamak için kullanılan sıra nesnesinin ilk (minimum veya maksimum) değerini verir. @ range_first_value olan sql_variantaynı temel tür istekte kullanılan sıra nesnesinin.

  • @ range_last_value =]range_last_value
    İsteğe bağlı çıkış parametresi, istenen aralığın son değeri döndürür. @ range_last_value olan sql_variantaynı temel tür istekte kullanılan sıra nesnesinin.

  • @ range_cycle_count =] range_cycle_count
    İsteğe bağlı çıkış parametresi, istenen aralığı dönmek için sıra nesne cycled sayısını döndürür. @ range_cycle_count olan int.

  • @ sequence_increment =]sequence_increment
    İsteğe bağlı çıkış parametresi, istenen aralığı hesaplamak için kullanılan sıra nesne artışını döndürür. @ sequence_increment olan sql_variantaynı temel tür istekte kullanılan sıra nesnesinin.

  • @ sequence_min_value =]sequence_min_value
    İsteğe bağlı çıkış parametresi sıra nesnesinin en düşük değerini verir. @ sequence_min_value olan sql_variantaynı temel tür istekte kullanılan sıra nesnesinin.

  • @ sequence_max_value =]sequence_max_value
    İsteğe bağlı çıkış parametresi sıra nesnesinin en yüksek değerini verir. @ sequence_max_value olan sql_variantaynı temel tür istekte kullanılan sıra nesnesinin.

Dönüş Kodu Değerleri

0 (başarılı) veya 1 (hata)

Açıklamalar

sp_sequence_get_rangeiçinde sys.şema ve olarak başvurulabilir sys.sp_sequence_get_range.

Bisiklet dizileri

Gerekirse, sıra nesne istenen aralığı hizmet süreleri uygun sayıda geçiş yapar. Kaç kez cycled çağırana döndürülen @range\_cycle\_countparametresi.

[!NOT]

Bisiklet zaman, bir sıra nesnesi yeniden artan bir sıra için en küçük değer ve azalan sıra maksimum değeri, sıra nesnesinin başlangıç değerinden değil.

Sigara Bisiklete binme dizileri

Belirtilen aralıktaki değerlerin sayısını kalan kullanılabilir değerler fazla ise sıra nesne istenen aralığı sıra nesneden kesilir değil ve 11732 şu hatayı döndürdü:

The requested range for sequence object '%.*ls' exceeds the maximum or minimum limit. Retry with a smaller range.

İzinler

Sıra nesnesi ya da sıra nesnesinin şema güncelleştirme izni gerektirir.

Örnekler

Aşağıdaki örnekler, adında bir sıra nesnesi kullanın Test.RangeSeq. Oluşturmak için aşağıdaki deyimi kullanın Test.RangeSeqsıra.

CREATE SCHEMA Test ;
GO

CREATE SEQUENCE Test.RangeSeq
    AS int 
    START WITH 1
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 25
    CYCLE
    CACHE 10
;

CREATE SCHEMA Test ;
GO

CREATE SEQUENCE Test.RangeSeq
    AS int 
    START WITH 1
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 25
    CYCLE
    CACHE 10
;

A.Sıra değer aralığı alınıyor

Dört sıra numaraları aşağıdaki ifadeyi alır Test.RangeSeqsırası nesnesi ve sayıları ilk kullanıcıya döndürür.

DECLARE @range_first_value sql_variant , 
        @range_first_value_output sql_variant ;

EXEC 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 ;

DECLARE @range_first_value sql_variant , 
        @range_first_value_output sql_variant ;

EXEC 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.Tüm çıkış parametreleri döndürme

Aşağıdaki örnek, tüm çıkış değerlerini verir sp_sequence_get_rangeyordam.

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 ;

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 ;

Değişen @range\_size75 gibi çok sayıda bağımsız değişken devir için sıra nesnesi neden olur. Kontrol @range\_cycle\_countolup olmadığını belirlemek için bağımsız ve sıra nesnenin kaç kez cycled.

C.ado kullanan örnek.NET

Aşağıdaki örnek aralığından alır Test.RangeSeqado kullanarak.net.

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 retreive 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);

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 retreive 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);

Ayrıca bkz.

Başvuru

SIRA (Transact-sql) oluştur

alter SIRASI (Transact-sql)

SIRA (Transact-sql) bırak

SONRAKİ değeri (Transact-sql)

Kavramlar

Sıra numaraları