Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
sql database v Microsoft Fabric
Vrací rozsah sekvenčních hodnot z objektu sekvence. Sekvenční objekt generuje a vydává požadovaný počet hodnot a poskytuje aplikaci metadata související s rozsahem.
Pro více informací o pořadových číslech viz Sekvenční čísla.
Syntaxe
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 ]
[ ; ]
Arguments
[ @sequence_name = ] N'sequence_name'
Název sekvenčního objektu. Schéma je volitelné. @sequence_name je nvarchar(776), bez výchozího nastavení.
[ @range_size = ] range_size
Počet hodnot, které je třeba získat ze sekvence. @range_size je bigint, bez výchozího nastavení.
[ @range_first_value = ] range_first_value VÝSTUP
Výstupní parametr vrací první (minimální nebo maximální) hodnotu sekvenčního objektu použitého k výpočtu požadovaného rozsahu. @range_first_value je parametr OUTPUT typu sql_variant, se stejným základním typem jako sekvenční objekt použitý v požadavku.
[ @range_last_value = ] range_last_value VÝSTUP
Volitelný výstupní parametr vrací poslední hodnotu požadovaného rozsahu. @range_last_value je parametr OUTPUT typu sql_variant, se stejným základním typem jako sekvenční objekt použitý v požadavku.
[ @range_cycle_count = ] range_cycle_count VÝSTUP
Volitelný výstupní parametr vrací počet cyklů, které sekvenční objekt provedl, aby vrátil požadovaný rozsah. @range_cycle_count je parametr OUTPUT typu int.
[ @sequence_increment = ] sequence_increment VÝSTUP
Volitelný výstupní parametr vrací přírůstek sekvenčního objektu použitého k výpočtu požadovaného rozsahu. @sequence_increment je parametr OUTPUT typu sql_variant, se stejným základním typem jako sekvenční objekt použitý v požadavku.
[ @sequence_min_value = ] sequence_min_value VÝSTUP
Volitelný výstupní parametr vrací minimální hodnotu sekvenčního objektu. @sequence_min_value je parametr OUTPUT typu sql_variant, se stejným základním typem jako sekvenční objekt použitý v požadavku.
[ @sequence_max_value = ] sequence_max_value VÝSTUP
Volitelný výstupní parametr vrací maximální hodnotu sekvenčního objektu. @sequence_max_value je parametr OUTPUT typu sql_variant, se stejným základním typem jako sekvenční objekt použitý v požadavku.
Hodnoty návratového kódu
0 (úspěch) nebo 1 (selhání).
Poznámky
sp_sequence_get_range je ve schématu sys a lze jej odkazovat jako sys.sp_sequence_get_range.
Cyklické sekvence
Pokud je to nutné, sekvenční objekt cykluje příslušný početkrát, aby obsloužil požadovaný rozsah. Počet cyklů se vrací volajícímu přes parametr @range_cycle_count .
Poznámka:
Při cyklování sekvenční objekt restartuje z minimální hodnoty pro vzestupnou sekvenci a maximální hodnoty pro sestupnou sekvenci, nikoli ze startovní hodnoty sekvenčního objektu.
Necyklické sekvence
Pokud je počet hodnot v požadovaném rozsahu větší než zbývající dostupné hodnoty v sekvenčním objektu, požadovaný rozsah není odečten ze sekvenčního objektu a je vrácena následující chyba 11732:
Požadovaný rozsah pro sekvenční objekt '%.*ls' překračuje maximální nebo minimální limit. Zkuste to znovu s menším rozsahem.
Povolení
Vyžaduje UPDATE povolení k sekvenčnímu objektu nebo schématu sekvenčního objektu.
Examples
Následující příklady používají sekvenční objekt nazvaný Test.RangeSeq. Použijte následující příkaz k vytvoření sekvence 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. Získejte rozsah sekvenčních hodnot
Následující příkaz získá čtyři pořadová čísla z objektu Test.RangeSeq a vrátí uživateli první číslo.
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. Vraťte všechny výstupní parametry
Následující příklad vrací všechny výstupní hodnoty z procedury sp_sequence_get_range .
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;
Změna argumentu @range_size na velké číslo, například způsobí 75 cyklus sekvenčního objektu. Zkontrolujte argument @range_cycle_count , abyste zjistili, zda a kolikrát se sekvenční objekt cykloval.
C. Příklad s použitím ADO.NET
Následující příklad získá rozsah z Test.RangeSeq pomocí 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);
Související obsah
-
CREATE SEQUENCE (Transact-SQL) - ALTEROVA SEKVENCE (Transact-SQL)
-
DROP SEQUENCE (Transact-SQL) -
DALŠÍ HODNOTA (Transact-SQL) - pořadových čísel