Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-adatbázis a Microsoft Fabricben
Sorozatértékek tartományát adja vissza egy sorozatobjektumtól. A szekvencia objektum generálja és adja ki a kért értékek számát, és az alkalmazásnak a tartományhoz kapcsolódó metaadatokat biztosít.
További információért a sorozatszámokról lásd: Sorozatszámok.
Transact-SQL szintaxis konvenciók
Szemantika
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'
A sorozatobjektum neve. A séma opcionális. @sequence_namenvarchar(776), alapértelmezett nélkül.
[ @range_size = ] range_size
Az értékek száma, amelyeket a sorozatból kell behozni. @range_sizenagy, nincs alapértelmezett eszköz.
[ @range_first_value = ] range_first_value KIMENET
A kimeneti paraméter a sorrend objektumának első (minimális vagy maximális) értékét adja vissza, amelyet a kért tartomány kiszámításához használnak. @range_first_value egy sql_variant típusú OUTPUT paraméter, amelynek alaptípusa megegyezik a kérésben használt szekvencia objektummal.
[ @range_last_value = ] range_last_value KIMENET
Az opcionális kimeneti paraméter a kért tartomány utolsó értékét adja vissza. @range_last_value egy sql_variant típusú OUTPUT paraméter, amely ugyanazzal az alaptípussal, mint a kérésben használt szekvencia objektum.
[ @range_cycle_count = ] range_cycle_count KIMENET
Az opcionális kimeneti paraméter azt adja vissza, hányszor ciklusban a sorozatobjektum a kívánt tartomány visszaadja. @range_cycle_count egy OUTPUT paraméter, amely int típusú.
[ @sequence_increment = ] sequence_increment KIMENET
Az opcionális kimeneti paraméter visszaadja a sorrend objektumának növekedését, amelyet a kért tartomány kiszámításához használnak. @sequence_increment egy sql_variant típusú OUTPUT paraméter, amely ugyanazzal az alaptípussal, mint a kérésben használt szekvencia objektum.
[ @sequence_min_value = ] sequence_min_value KIMENET
Az opcionális kimeneti paraméter a szekvenciaobjektum minimális értékét adja vissza. @sequence_min_value egy sql_variant típusú OUTPUT paraméter, amelynek alaptípusa megegyezik a kérésben használt szekvencia objektummal.
[ @sequence_max_value = ] sequence_max_value KIMENET
Az opcionális kimeneti paraméter a szekvenciaobjektum maximális értékét adja vissza. @sequence_max_value egy sql_variant típusú OUTPUT paraméter, amely ugyanazzal az alaptípussal, mint a kérésben használt szekvenciaobjektum.
Kódértékek visszaadása
0 (sikeres) vagy 1 (hiba).
Megjegyzések
sp_sequence_get_rangea sys sémában szerepel, és hivatkozható .sys.sp_sequence_get_range
Kerékpáros szekvenciák
Szükség esetén a sorozat objektum a megfelelő számú ciklust indítja a kívánt tartomány kiszolgálásához. A ciklusok számát a @range_cycle_count paraméteren keresztül visszaküldik a hívónak.
Megjegyzés:
Cikluskor egy sorozatobjektum újraindul a növekvő sorozat minimális értékéből és a csökkenő sorozat maximális értékéből, nem a sorozat objektumának kezdő értékéből.
Nem ciklusos szekvenciák
Ha a kért tartományban lévő értékek száma nagyobb, mint a sorozat objektumban maradt elérhető értékek, akkor a kért tartomány nem vonul le a sorozat objektumból, és a következő 11732-es hiba jelenik meg:
A "%.*ls" sorozatobjektum kért tartománya meghaladja a maximális vagy minimális korlátot. Próbálkozzon újra egy kisebb tartománnyal.
Permissions
Engedélyt igényel UPDATE a sorozatobjektumra vagy a sorozatobjektum sémájára.
Példák
Az alábbi példák egy szekvenciaobjektumot használnak, amelynek neve Test.RangeSeq. Használja az alábbi utasítást a sorozat létrehozásához 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. Szerezz egy sorozatérték-tartományt
A következő állítás négy sorozatszámot kap a Test.RangeSeq sorozatobjektumból, és az első számot adja vissza a felhasználónak.
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. Vissza kell adni az összes kimeneti paramétert
A következő példa visszaadja az eljárás összes kimeneti értékét 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;
Ha a @range_size argumentumot nagy számra változtatjuk, 75 például a sorozatobjektum ciklusát eredményezi. Ellenőrizd a @range_cycle_count argumentumot, hogy megállapítsd, hogy a sorozat objektum ciklusban volt-e és hányszor.
C. Példa ADO.NET használatával
A következő példa a Test.RangeSeq tartományból ADO.NET használatával kap egy tartományt.
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);