Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL database di Microsoft Fabric
Mengembalikan rentang nilai urutan dari objek urutan. Objek urutan menghasilkan dan mengeluarkan jumlah nilai yang diminta dan menyediakan aplikasi dengan metadata yang terkait dengan rentang.
Untuk informasi selengkapnya tentang nomor urut, lihat Nomor Urutan.
Sintaks
sp_sequence_get_range
[ @sequence_name = ] N'sequence_name'
, [ @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 ]
[ ; ]
Argumen
[ @sequence_name = ] N'sequence_name'
Nama objek urutan. Skema bersifat opsional. @sequence_name adalah nvarchar(776), tanpa default.
[ @range_size = ] range_size
Jumlah nilai yang diambil dari urutan. @range_size besar, tanpa default.
[ @range_first_value = ] range_first_value KELUARAN
Parameter output mengembalikan nilai pertama (minimum atau maksimum) dari objek urutan yang digunakan untuk menghitung rentang yang diminta. @range_first_value adalah parameter OUTPUT dari jenis sql_variant, dengan jenis dasar yang sama dengan objek urutan yang digunakan dalam permintaan.
[ @range_last_value = ] range_last_value KELUARAN
Parameter output opsional mengembalikan nilai terakhir dari rentang yang diminta. @range_last_value adalah parameter OUTPUT dari jenis sql_variant, dengan jenis dasar yang sama dengan objek urutan yang digunakan dalam permintaan.
[ @range_cycle_count = ] range_cycle_count KELUARAN
Parameter output opsional mengembalikan berapa kali objek urutan di-siklus untuk mengembalikan rentang yang diminta. @range_cycle_count adalah parameter OUTPUT dari jenis int.
[ @sequence_increment = ] sequence_increment KELUARAN
Parameter output opsional mengembalikan kenaikan objek urutan yang digunakan untuk menghitung rentang yang diminta. @sequence_increment adalah parameter OUTPUT dari jenis sql_variant, dengan jenis dasar yang sama dengan objek urutan yang digunakan dalam permintaan.
[ @sequence_min_value = ] sequence_min_value KELUARAN
Parameter output opsional mengembalikan nilai minimum objek urutan. @sequence_min_value adalah parameter OUTPUT dari jenis sql_variant, dengan jenis dasar yang sama dengan objek urutan yang digunakan dalam permintaan.
[ @sequence_max_value = ] sequence_max_value KELUARAN
Parameter output opsional mengembalikan nilai maksimum objek urutan. @sequence_max_value adalah parameter OUTPUT dari jenis sql_variant, dengan jenis dasar yang sama dengan objek urutan yang digunakan dalam permintaan.
Mengembalikan nilai kode
0 (berhasil) atau 1 (kegagalan).
Keterangan
sp_sequence_get_range berada dalam sys skema, dan dapat dirujuk sebagai sys.sp_sequence_get_range.
Urutan bersepeda
Jika perlu, objek urutan siklus berapa kali yang sesuai untuk melayani rentang yang diminta. Berapa kali siklus dikembalikan ke pemanggil melalui parameter @range_cycle_count .
Catatan
Saat bersepeda, objek urutan dimulai ulang dari nilai minimum untuk urutan naik dan nilai maksimum untuk urutan turun, bukan dari nilai awal objek urutan.
Urutan non-bersepeda
Jika jumlah nilai dalam rentang yang diminta lebih besar dari nilai yang tersedia yang tersisa dalam objek urutan, rentang yang diminta tidak dikurangi dari objek urutan, dan kesalahan berikut 11732 dikembalikan:
Rentang yang diminta untuk objek urutan '%.*ls' melebihi batas maksimum atau minimum. Coba lagi dengan rentang yang lebih kecil.
Izin
UPDATE Memerlukan izin pada objek urutan atau skema objek urutan.
Contoh
Contoh berikut menggunakan objek urutan bernama Test.RangeSeq. Gunakan pernyataan berikut untuk membuat Test.RangeSeq urutan.
CREATE SCHEMA Test;
GO
CREATE SEQUENCE Test.RangeSeq
AS INT
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 25
CYCLE
CACHE 10;
J. Mengambil rentang nilai urutan
Pernyataan berikut mendapatkan empat angka urutan dari objek urutan Test.RangeSeq dan mengembalikan angka pertama kepada pengguna.
DECLARE @range_first_value_output AS SQL_VARIANT;
EXECUTE 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. Mengembalikan semua parameter output
Contoh berikut mengembalikan semua nilai output dari sp_sequence_get_range prosedur.
DECLARE
@FirstSeqNum AS SQL_VARIANT,
@LastSeqNum AS SQL_VARIANT,
@CycleCount AS INT,
@SeqIncr AS SQL_VARIANT,
@SeqMinVal AS SQL_VARIANT,
@SeqMaxVal AS SQL_VARIANT;
EXECUTE 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;
Mengubah argumen @range_size menjadi angka besar seperti 75 menyebabkan objek urutan berputar.
Periksa argumen @range_cycle_count untuk menentukan apakah dan berapa kali objek urutan telah bersepeda.
C. Contoh menggunakan ADO.NET
Contoh berikut mendapatkan rentang dari Test.RangeSeq dengan menggunakan ADO.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 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);