Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-database in Microsoft Fabric
Geeft een bereik van sequentiewaarden terug van een sequentieobject. Het sequentieobject genereert en geeft het aantal gevraagde waarden en voorziet de applicatie van metadata met betrekking tot het bereik.
Voor meer informatie over volgnummers, zie Sequentienummers.
Transact-SQL syntaxis-conventies
Syntaxis
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'
De naam van het sequentieobject. Het schema is optioneel. @sequence_name is nvarchar(776), zonder standaard.
[ @range_size = ] range_size
Het aantal waarden dat uit de reeks moet worden opgehaald. @range_size is bigint, zonder standaard.
[ @range_first_value = ] range_first_value OUTPUT
De outputparameter geeft de eerste (minimale of maximum) waarde terug van het sequentieobject dat wordt gebruikt om het gevraagde bereik te berekenen. @range_first_value is een OUTPUT-parameter van type sql_variant, met hetzelfde basistype als het sequentieobject dat in het verzoek wordt gebruikt.
[ @range_last_value = ] range_last_value OUTPUT
De optionele outputparameter geeft de laatste waarde van het gevraagde bereik terug. @range_last_value is een OUTPUT-parameter van type sql_variant, met hetzelfde basistype als het sequentieobject dat in het verzoek wordt gebruikt.
[ @range_cycle_count = ] range_cycle_count OUTPUT
Optionele outputparameter geeft het aantal keren terug dat het sequentieobject heeft gecycleerd om het gevraagde bereik terug te geven. @range_cycle_count is een OUTPUT-parameter van het type int.
[ @sequence_increment = ] sequence_increment OUTPUT
Optionele outputparameter geeft de increment van het sequentieobject terug dat wordt gebruikt om het gevraagde bereik te berekenen. @sequence_increment is een OUTPUT-parameter van type sql_variant, met hetzelfde basistype als het sequentieobject dat in het verzoek wordt gebruikt.
[ @sequence_min_value = ] sequence_min_value OUTPUT
De optionele outputparameter geeft de minimale waarde van het sequentieobject terug. @sequence_min_value is een OUTPUT-parameter van type sql_variant, met hetzelfde basistype als het sequentieobject dat in het verzoek wordt gebruikt.
[ @sequence_max_value = ] sequence_max_value OUTPUT
De optionele outputparameter geeft de maximale waarde van het sequentieobject terug. @sequence_max_value is een OUTPUT-parameter van type sql_variant, met hetzelfde basistype als het sequentieobject dat in het verzoek wordt gebruikt.
Codewaarden retourneren
0 (geslaagd) of 1 (mislukt).
Opmerkingen
sp_sequence_get_range in het sys schema is, en kan worden aangeduid als sys.sp_sequence_get_range.
Fietssequenties
Indien nodig cyclus het sequentieobject het juiste aantal keren om het gevraagde bereik te bedienen. Het aantal keren dat wordt gecycleerd wordt via de @range_cycle_count parameter aan de aanroeper teruggegeven.
Opmerking
Bij cyclen start een sequentieobject opnieuw vanaf de minimale waarde voor een oplopende reeks en de maximumwaarde voor een dalende reeks, niet vanaf de startwaarde van het sequentieobject.
Niet-cyclische sequenties
Als het aantal waarden in het gevraagde bereik groter is dan de resterende beschikbare waarden in het sequentieobject, wordt het gevraagde bereik niet afgetrokken van het sequentieobject, en wordt de volgende foutmelding 11732 teruggegeven:
Het aangevraagde bereik voor het reeksobject '%.*ls' overschrijdt de maximum- of minimumlimiet. Probeer het opnieuw met een kleiner bereik.
Permissions
Vereist UPDATE toestemming voor het sequentieobject of het schema van het sequentieobject.
Voorbeelden
De volgende voorbeelden gebruiken een sequentieobject genaamd Test.RangeSeq. Gebruik de volgende instructie om de Test.RangeSeq reeks te maken.
CREATE SCHEMA Test;
GO
CREATE SEQUENCE Test.RangeSeq
AS INT
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 25
CYCLE
CACHE 10;
Eén. Haal een bereik van sequentiewaarden op
De volgende instructie krijgt vier volgnummers van het Test.RangeSeq sequentieobject en geeft het eerste van de nummers terug aan de gebruiker.
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. Geef alle uitvoerparameters terug
Het volgende voorbeeld geeft alle uitvoerwaarden van de sp_sequence_get_range procedure terug.
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;
Het veranderen van het @range_size-argument naar een groot getal zoals veroorzaakt dat 75 het sequentieobject cyclust. Controleer het @range_cycle_count-argument om te bepalen of en hoe vaak het sequentieobject heeft gecycleerd.
C. Voorbeeld met ADO.NET
Het volgende voorbeeld krijgt een bereik uit de Test.RangeSeq door gebruik te maken van 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);
Verwante inhoud
-
CREATE SEQUENCE (Transact-SQL) - ALTER SEQUENCE (Transact-SQL)
- DROP-SEQUENTIE (Transact-SQL)
- VOLGENDE WAARDE VOOR (Transact-SQL)
- reeksnummers