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
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
A Transact-SQL köteg első lehetséges eredményhalmazának metaadatait adja vissza. Üres eredményhalmazt ad vissza, ha a köteg nem ad eredményül. Hibát jelez, ha az adatbázismotor nem tudja meghatározni az első, statikus elemzéssel végrehajtandó lekérdezés metaadatait. A dinamikus felügyeleti nézet sys.dm_exec_describe_first_result_set ugyanazokat az információkat adja vissza.
Transact-SQL szintaxis konvenciói
Szintaxis
sp_describe_first_result_set [ @tsql = ] N'tsql'
[ , [ @params = ] N'@parameter_name data_type [ , ... n ]' ]
[ , [ @browse_information_mode = ] <tinyint> ]
[ ; ]
Érvek
Fontos
A kiterjesztett tárolt eljárások argumentumait a Szintaxis szakaszban leírt sorrendben kell megadni. Ha a paraméterek sorrenden kívül vannak beírva, hibaüzenet jelenik meg.
[ @tsql = ] 'tsql'
Egy vagy több Transact-SQL utasítás. @tsql lehet nvarchar(n) vagy nvarchar(max).
[ @params = ] N'@parameter_namedata_type [ , ... n ]'
@params deklarációs sztringet biztosít a Transact-SQL köteg paramétereihez, amely hasonló a sp_executesql. A paraméterek lehetnek nvarchar(n) vagy nvarchar(max).
Egy sztring, amely a @tsqlbeágyazott összes paraméter definícióját tartalmazza. A sztringnek Unicode-állandónak vagy Unicode-változónak kell lennie. Minden paraméterdefiníció egy paraméternévből és egy adattípusból áll.
n egy helyőrző, amely további paraméterdefiníciókat jelez. Az utasításban megadott paramétereket @paramskell definiálni. Ha az utasításban szereplő Transact-SQL utasítás vagy köteg nem tartalmaz paramétereket, @params nincs szükség.
NULL a paraméter alapértelmezett értéke.
[ @browse_information_mode = ] apró
Megadja, hogy a rendszer visszaadja-e a további kulcsoszlopokat és a forrástábla adatait. Ha 1értékre van állítva, a rendszer úgy elemzi az egyes lekérdezéseket, mintha egy FOR BROWSE lehetőséget tartalmaz a lekérdezéshez.
Ha
0értékre van állítva, a rendszer nem ad vissza információt.Ha
1értékre van állítva, a rendszer úgy elemzi az egyes lekérdezéseket, mintha egyFOR BROWSElehetőséget tartalmaz a lekérdezéshez. Ez az alaptáblaneveket adja vissza forrásoszlop-információként.Ha
2értékre van állítva, a rendszer minden lekérdezést úgy elemez, mintha a kurzor előkészítéséhez vagy végrehajtásához használná. Ez a nézetneveket forrásoszlop-információként adja vissza.
Kódértékek visszaadása
sp_describe_first_result_set mindig nullás állapotot ad vissza a sikerhez. Ha az eljárás hibát jelez, és az eljárást RPC-nek nevezzük, a visszatérési állapotot a sys.dm_exec_describe_first_result_seterror_type oszlopában leírt hibatípus tölti ki. Ha az eljárást Transact-SQL-ből hívjuk meg, a visszatérési érték mindig nulla, még akkor is, ha hiba történik.
Eredményhalmaz
Ez a gyakori metaadatok eredményhalmazként lesznek visszaadva, és az eredmény metaadatainak minden oszlopához egy sor tartozik. Minden sor az oszlop típusát és nullképességét írja le a következő szakaszban leírt formátumban. Ha az első utasítás nem létezik minden vezérlőútvonalhoz, a rendszer nulla sorokkal rendelkező eredményhalmazt ad vissza.
| Oszlop neve | Adattípus | Leírás |
|---|---|---|
is_hidden |
bit | Azt jelzi, hogy az oszlop egy további oszlop, amelyet böngészési információk céljából adtak hozzá, és hogy valójában nem jelenik meg az eredményhalmazban. Nem null értékű. |
column_ordinal |
Az eredményhalmaz oszlopának sorszámát tartalmazza. Az első oszlop helye 1. Nem null értékű. |
|
name |
sysname | Az oszlop nevét tartalmazza, ha meghatározható a név. Ellenkező esetben NULLtartalmaz. Nullázható. |
is_nullable |
bit | Az 1 értéket tartalmazza, ha az oszlop engedélyezi NULL, 0 ha az oszlop nem engedélyezi NULL, és 1, ha az oszlop engedélyezi NULL. Nem null értékű. |
system_type_id |
Az oszlop adattípusának system_type_id tartalmazza a sys.types. CLR-típusok esetén annak ellenére, hogy a system_type_name oszlop NULLad vissza, ez az oszlop a 240értéket adja vissza. Nem null értékű. |
|
system_type_name |
nvarchar(256) | Az oszlop adattípusához megadott nevet és argumentumokat (például hossz, pontosság, skálázás) tartalmazza. Ha az adattípus egy felhasználó által definiált aliastípus, a mögöttes rendszertípus itt van megadva. Ha ez egy felhasználó által definiált CLR-típus, NULL jelenik meg ebben az oszlopban. Nullázható. |
max_length |
kis | Az oszlop maximális hossza (bájtban kifejezve).-1 = Az oszlop adattípusa varchar(max), nvarchar(max), varbinary(max)vagy xml.Ha szöveg oszlopot, a max_length érték 16 vagy a sp_tableoption 'text in row'által beállított érték. Nem null értékű. |
precision |
apró | Az oszlop pontossága numerikus alapú esetén. Ellenkező esetben 0ad vissza. Nem null értékű. |
scale |
apró | Oszlopméret, ha numerikus alapú. Ellenkező esetben 0ad vissza. Nem null értékű. |
collation_name |
sysname | Az oszlop rendezési neve, ha karakteralapú. Ellenkező esetben NULLad vissza. Nullázható. |
user_type_id |
CLR- és aliastípusok esetén az oszlop adattípusának user_type_id tartalmazza a sys.types. Ellenkező esetben NULL. Nullázható. |
|
user_type_database |
sysname | A CLR- és aliastípusok esetében annak az adatbázisnak a nevét tartalmazza, amelyben a típus definiálva van. Ellenkező esetben NULL. Nullázható. |
user_type_schema |
sysname | A CLR- és aliastípusok esetében annak a sémanak a nevét tartalmazza, amelyben a típus definiálva van. Ellenkező esetben NULL. Nullázható. |
user_type_name |
sysname | A CLR- és aliastípusok esetében a típus nevét tartalmazza. Ellenkező esetben NULL. Nullázható. |
assembly_qualified_type_name |
nvarchar(4000) | CLR-típusok esetén a típust meghatározó szerelvény és osztály nevét adja vissza. Ellenkező esetben NULL. Nullázható. |
xml_collection_id |
Az oszlop adattípusának xml_collection_id tartalmazza a sys.columns. Ez az oszlop NULL ad vissza, ha a visszaadott típus nincs XML-sémagyűjteményhez társítva. Nullázható. |
|
xml_collection_database |
sysname | Azt az adatbázist tartalmazza, amelyben az ehhez a típushoz társított XML-sémagyűjtemény definiálva van. Ez az oszlop NULL ad vissza, ha a visszaadott típus nincs XML-sémagyűjteményhez társítva. Nullázható. |
xml_collection_schema |
sysname | Azt a sémát tartalmazza, amelyben az ehhez a típushoz társított XML-sémagyűjtemény definiálva van. Ez az oszlop NULL ad vissza, ha a visszaadott típus nincs XML-sémagyűjteményhez társítva. Nullázható. |
xml_collection_name |
sysname | Az ehhez a típushoz társított XML-sémagyűjtemény nevét tartalmazza. Ez az oszlop NULL ad vissza, ha a visszaadott típus nincs XML-sémagyűjteményhez társítva. Nullázható. |
is_xml_document |
bit |
1 ad vissza, ha a visszaadott adattípus XML, és ez a típus garantáltan teljes XML-dokumentum (beleértve a gyökércsomópontot is), szemben egy XML-töredékkel. Ellenkező esetben 0ad vissza. Nem null értékű. |
is_case_sensitive |
bit |
1 ad vissza, ha az oszlop kis- és nagybetűket megkülönböztet, és 0, ha nem. Nem null értékű. |
is_fixed_length_clr_type |
bit | Visszaadja 1, ha az oszlop rögzített hosszúságú CLR-típus, és 0, ha nem. Nem null értékű. |
source_server |
sysname | Az eredmény oszlopa által visszaadott forráskiszolgáló neve (ha távoli kiszolgálóról származik). A név a sys.serversjelenik meg.
NULL adja vissza, ha az oszlop a helyi kiszolgálóról származik, vagy ha nem állapítható meg, hogy melyik kiszolgálóról származik. A rendszer csak böngészési adatok kérése esetén tölti ki. Nullázható. |
source_database |
sysname | Az eredmény oszlopa által visszaadott származó adatbázis neve.
NULL ad vissza, ha az adatbázis nem határozható meg. A rendszer csak böngészési adatok kérése esetén tölti ki. Nullázható. |
source_schema |
sysname | Az eredmény oszlopa által visszaadott eredeti séma neve.
NULL ad vissza, ha a séma nem határozható meg. A rendszer csak böngészési adatok kérése esetén tölti ki. Nullázható. |
source_table |
sysname | Az eredmény oszlopa által visszaadott származó tábla neve.
NULL ad vissza, ha a tábla nem határozható meg. A rendszer csak böngészési adatok kérése esetén tölti ki. Nullázható. |
source_column |
sysname | Az eredményoszlop által visszaadott származó oszlop neve.
NULL ad vissza, ha az oszlop nem határozható meg. A rendszer csak böngészési adatok kérése esetén tölti ki. Nullázható. |
is_identity_column |
bit | Az 1 adja vissza, ha az oszlop identitásoszlop, és 0, ha nem.
NULL ad vissza, ha nem állapítható meg, hogy az oszlop identitásoszlop. Nullázható. |
is_part_of_unique_key |
bit |
1 ad vissza, ha az oszlop egy egyedi index része (beleértve az egyedi és az elsődleges korlátozást is), és 0, ha nem.
NULL ad vissza, ha nem állapítható meg, hogy az oszlop egy egyedi index része. Csak akkor van kitöltve, ha böngészési adatokat kérnek. Nullázható. |
is_updateable |
bit |
1 ad vissza, ha az oszlop frissíthető, és 0, ha nem.
NULL ad vissza, ha nem állapítható meg, hogy az oszlop frissíthető-e. Nullázható. |
is_computed_column |
bit |
1 ad vissza, ha az oszlop számított oszlop, és 0, ha nem.
NULL ad vissza, ha nem állapítható meg, hogy az oszlop számított oszlop. Nullázható. |
is_sparse_column_set |
bit | A 1 adja vissza, ha az oszlop ritka oszlop, és 0, ha nem.
NULL ad vissza, ha nem állapítható meg, hogy az oszlop egy ritka oszlopkészlet része. Nullázható. |
ordinal_in_order_by_list |
kis | Az oszlop helye ORDER BY listában.
NULL ad vissza, ha az oszlop nem jelenik meg a ORDER BY listában, vagy ha a ORDER BY lista nem határozható meg egyedileg. Nullázható. |
order_by_list_length |
kis | A ORDER BY lista hossza.
NULL ad vissza, ha nincs ORDER BY lista, vagy ha a ORDER BY lista nem határozható meg egyedileg. Ez az érték megegyezik az sp_describe_first_result_setáltal visszaadott összes sornál. Nullázható. |
order_by_is_descending |
kis | Ha a ordinal_in_order_by_list nem NULL, a order_by_is_descending oszlop az oszlop ORDER BY záradékának irányát jelenti. Ellenkező esetben a jelentés NULL. Nullázható. |
tds_type_id |
Belső használatra. Nem null értékű. | |
tds_length |
Belső használatra. Nem null értékű. | |
tds_collation_id |
Belső használatra. Nullázható. | |
tds_collation_sort_id |
apró | Belső használatra. Nullázható. |
Megjegyzések
sp_describe_first_result_set garantálja, hogy ha az eljárás az A (hipotetikus) köteg első eredményhalmazú metaadatait adja vissza, és a köteg (A) végrehajtása után a köteg a következő:
- optimalizálási idő hibát jelez
- futásidejű hibát jelez
- eredményhalmazt nem ad vissza
- az
sp_describe_first_result_setáltal leírt metaadatokkal rendelkező első eredményhalmazt adja vissza
A név, a nullitás és az adattípus eltérhet. Ha sp_describe_first_result_set üres eredményhalmazt ad vissza, a garancia az, hogy a köteg végrehajtása eredmény nélküli készleteket ad vissza.
Ez a garancia feltételezi, hogy a kiszolgálón nincsenek releváns sémamódosítások. A kiszolgáló vonatkozó sémamódosításai nem tartalmazzák az A kötegben lévő ideiglenes táblák vagy táblaváltozók létrehozását az sp_describe_first_result_set meghívása és az eredményhalmaz végrehajtása során történő visszaadása között, beleértve a B köteg sémamódosításait is.
sp_describe_first_result_set a következő esetekben ad vissza hibát:
A bemeneti @tsql nem érvényes Transact-SQL köteg. Az érvényességet a Transact-SQL köteg elemzése és elemzése határozza meg. A köteg által a lekérdezés optimalizálása vagy végrehajtása során okozott hibák nem kerülnek figyelembe annak meghatározásakor, hogy a Transact-SQL köteg érvényes-e.
@params nem
NULL, és olyan sztringet tartalmaz, amely nem a paraméterek szintaktikailag érvényes deklarációs sztringje, vagy ha olyan sztringet tartalmaz, amely egynél több paramétert deklarál.A bemeneti Transact-SQL köteg a @paramsparaméterrel azonos nevű helyi változót deklarál.
Az utasítás egy ideiglenes táblát használ.
A lekérdezés tartalmazza a lekérdezett állandó tábla létrehozását.
Ha az összes többi ellenőrzés sikeres, a bemeneti kötegen belüli összes lehetséges vezérlőfolyamat-útvonal figyelembe lesz véve. Ez figyelembe veszi az összes vezérlőfolyamat-utasítást (GOTO, IF/ELSE, WHILEés Transact-SQL TRY/CATCH blokkot), valamint a bemeneti kötegből egy EXECUTE utasítással meghívott összes eljárást, dinamikus Transact-SQL köteget vagy eseményindítót, egy DDL-utasítást, amely DDL-eseményindítókat indít el, vagy egy olyan DML-utasítást, amely eseményindítókat aktivál egy céltáblán vagy egy olyan táblán, amely egy kaszkádolt művelet miatt módosul egy adott táblán idegenkulcs-korlátozás. Egy bizonyos ponton, mint sok lehetséges vezérlőútvonalnál, egy algoritmus leáll.
Az egyes vezérlőfolyamat-útvonalak esetében az eredményhalmazt visszaadó első utasítást (ha van ilyen) a sp_describe_first_result_sethatározza meg.
Ha egy kötegben több lehetséges első utasítás található, az eredmények eltérőek lehetnek az oszlopok, az oszlopok neve, a nullitás és az adattípus között. A különbségek kezelésének módjáról itt olvashat részletesebben:
Ha az oszlopok száma eltér, a függvény hibát jelez, és nem ad eredményül.
Ha az oszlop neve eltér, a visszaadott oszlopnév
NULLlesz.Ha a nullabilitás eltér, a visszaadott nullhihetőség lehetővé teszi
NULL.Ha az adattípus eltér, a rendszer hibát jelez, és az alábbi esetek kivételével nem ad vissza eredményt:
- varchar(a)varchar(a'), ahol a" > a.
- varchar(a)varchar(max)
- nvarchar(a)nvarchar(a'), ahol a" > a.
- nvarchar(a)nvarchar(max)
- varbinary(a)varbinary(a'), ahol az a' > a.
- varbinary(a)varbinary(max)
sp_describe_first_result_set nem támogatja a közvetett rekurziót.
Engedélyek
Engedélyt igényel a @tsql argumentum végrehajtásához.
Példák
Tipikus példák
Egy. Egyszerű példa
Az alábbi példa az egyetlen lekérdezésből visszaadott eredményhalmazt ismerteti.
EXECUTE sp_describe_first_result_set @tsql = N'SELECT object_id, name, type_desc FROM sys.indexes';
Az alábbi példa egy paramétert tartalmazó lekérdezésből visszaadott eredményhalmazt mutatja be.
EXECUTE sp_describe_first_result_set @tsql = N'
SELECT object_id, name, type_desc
FROM sys.indexes
WHERE object_id = @id1', @params = N'@id1 int';
B. Példák tallózási módra
Az alábbi három példa bemutatja a különböző böngészési információs módok közötti fő különbséget. A lekérdezés eredményei csak a megfelelő oszlopokat tartalmazzák.
Példa a 0használatára, amely azt jelzi, hogy a rendszer nem ad vissza információt.
CREATE TABLE dbo.t
(
a INT PRIMARY KEY,
b1 INT
);
GO
CREATE VIEW dbo.v AS
SELECT b1 AS b2
FROM dbo.t;
GO
EXECUTE sp_describe_first_result_set N'SELECT b2 AS b3 FROM dbo.v', NULL, 0;
Íme egy részleges eredményhalmaz.
| el van rejtve | oszlop sorszám | név | source_schema | source_table | source_column | is_part_of_unique_key |
|---|---|---|---|---|---|---|
0 |
1 | b3 | NULL |
NULL |
NULL |
NULL |
Az 1-et használó példa azt jelzi, hogy az adatokat úgy adja vissza, mintha a lekérdezésben szerepel egy FOR BROWSE beállítás.
EXECUTE sp_describe_first_result_set N'SELECT b2 AS b3 FROM v', NULL, 1;
Íme egy részleges eredményhalmaz.
| el van rejtve | oszlop sorszám | név | source_schema | source_table | source_column | is_part_of_unique_key |
|---|---|---|---|---|---|---|
0 |
1 | b3 | dbo | t | B1 | 0 |
1 |
2 | egy | dbo | t | egy | 1 |
Példa a 2-re, amely az elemzést úgy jelzi, mintha egy kurzort készít elő.
EXECUTE sp_describe_first_result_set N'SELECT b2 AS b3 FROM v', NULL, 2;
Itt van az eredményhalmaz.
| el van rejtve | oszlop sorszám | név | source_schema | source_table | source_column | is_part_of_unique_key |
|---|---|---|---|---|---|---|
0 |
1 | B3 | dbo | v | B2 | 0 |
1 |
2 | ROWSTAT | NULL |
NULL |
NULL |
0 |
C. Eredmények tárolása táblában
Bizonyos esetekben a sp_describe_first_result_set eljárás eredményeit egy táblába kell helyeznie, hogy a sémát tovább tudja feldolgozni.
Először létre kell hoznia egy táblát, amely megfelel a sp_describe_first_result_set eljárás kimenetének:
CREATE TABLE #frs
(
is_hidden BIT NOT NULL,
column_ordinal INT NOT NULL,
name SYSNAME NULL,
is_nullable BIT NOT NULL,
system_type_id INT NOT NULL,
system_type_name NVARCHAR (256) NULL,
max_length SMALLINT NOT NULL,
precision TINYINT NOT NULL,
scale TINYINT NOT NULL,
collation_name SYSNAME NULL,
user_type_id INT NULL,
user_type_database SYSNAME NULL,
user_type_schema SYSNAME NULL,
user_type_name SYSNAME NULL,
assembly_qualified_type_name NVARCHAR (4000),
xml_collection_id INT NULL,
xml_collection_database SYSNAME NULL,
xml_collection_schema SYSNAME NULL,
xml_collection_name SYSNAME NULL,
is_xml_document BIT NOT NULL,
is_case_sensitive BIT NOT NULL,
is_fixed_length_clr_type BIT NOT NULL,
source_server SYSNAME NULL,
source_database SYSNAME NULL,
source_schema SYSNAME NULL,
source_table SYSNAME NULL,
source_column SYSNAME NULL,
is_identity_column BIT NULL,
is_part_of_unique_key BIT NULL,
is_updateable BIT NULL,
is_computed_column BIT NULL,
is_sparse_column_set BIT NULL,
ordinal_in_order_by_list SMALLINT NULL,
order_by_list_length SMALLINT NULL,
order_by_is_descending SMALLINT NULL,
tds_type_id INT NOT NULL,
tds_length INT NOT NULL,
tds_collation_id INT NULL,
tds_collation_sort_id TINYINT NULL
);
Amikor létrehoz egy táblát, abban a táblában tárolhatja egy lekérdezés sémáját.
DECLARE @tsql AS NVARCHAR (MAX) = 'select top 0 * from sys.credentials';
INSERT INTO #frs
EXECUTE sys.sp_describe_first_result_set @tsql;
SELECT *
FROM #frs;
Példák problémákra
Az alábbi példák két táblát használnak minden példához. A példatáblák létrehozásához hajtsa végre az alábbi utasításokat.
CREATE TABLE dbo.t1
(
a INT NULL,
b VARCHAR (10) NULL,
c NVARCHAR (10) NULL
);
CREATE TABLE dbo.t2
(
a SMALLINT NOT NULL,
d VARCHAR (20) NOT NULL,
e INT NOT NULL
);
Hiba, mert az oszlopok száma eltér
A lehetséges első eredményhalmazokban lévő oszlopok száma ebben a példában különbözik.
EXECUTE sp_describe_first_result_set @tsql = N'
IF (1 = 1)
SELECT a FROM t1;
ELSE
SELECT a, b FROM t1;
SELECT * FROM t; -- Ignored, not a possible first result set.';
Hiba, mert az adattípusok eltérnek
Az oszloptípusok eltérőek az első lehetséges eredményhalmazokban.
EXECUTE sp_describe_first_result_set @tsql = N'
IF (1 = 1)
SELECT a FROM t1;
ELSE
SELECT a FROM t2;';
Ez az eltérő típusok (int és kis) hibáját eredményezi.
Az oszlop neve nem határozható meg
A lehetséges első eredményhalmazokban lévő oszlopok hossza azonos változóhossz-típus, nullhiba és oszlopnevek esetén tér el egymástól:
EXECUTE sp_describe_first_result_set @tsql = N'
IF (1 = 1)
SELECT b FROM t1;
ELSE
SELECT d FROM t2;';
Íme egy részleges eredményhalmaz.
| Oszlop | Érték |
|---|---|
name |
Ismeretlen oszlopnév |
system_type_name |
varchar |
max_length |
20 |
is_nullable |
1 |
Az oszlopnév aliasolással való azonosságra kényszerítve
Ugyanaz, mint az előző, de az oszlopok neve megegyezik az oszlop aliasolásával.
EXECUTE sp_describe_first_result_set @tsql = N'
IF (1 = 1)
SELECT b FROM t1;
ELSE
SELECT d AS b FROM t2;';
Íme egy részleges eredményhalmaz.
| Oszlop | Érték |
|---|---|
name |
b |
system_type_name |
varchar |
max_length |
20 |
is_nullable |
1 |
Hiba, mert az oszloptípusok nem egyeznek
Az oszloptípusok eltérőek az első lehetséges eredményhalmazokban.
EXECUTE sp_describe_first_result_set @tsql = N'
IF (1 = 1)
SELECT b FROM t1;
ELSE
SELECT c FROM t1;';
Ez az eltérő típusok (varchar(10) és nvarchar(10)) hibáját eredményezi.
Az eredményhalmaz hibát adhat vissza
Az első eredményhalmaz hiba vagy eredményhalmaz.
EXECUTE sp_describe_first_result_set @tsql = N'
IF (1 = 1)
RAISERROR(''Some Error'', 16 , 1);
ELSE
SELECT a FROM t1;
SELECT e FROM t2; -- Ignored, not a possible first result set.';
Íme egy részleges eredményhalmaz.
| Oszlop | Érték |
|---|---|
name |
a |
system_type_name |
int |
is_nullable |
1 |
Egyes kód elérési útjai nem adnak eredményül
Az első eredményhalmaz null értékű vagy eredményhalmaz.
EXECUTE sp_describe_first_result_set @tsql = N'
IF (1 = 1)
RETURN;
SELECT a FROM t1;';
Íme egy részleges eredményhalmaz.
| Oszlop | Érték |
|---|---|
name |
a |
system_type_name |
int |
is_nullable |
1 |
Dinamikus SQL-ből származó eredmény
Az első eredményhalmaz a dinamikus SQL, amely felderíthető, mivel ez egy literális sztring.
EXECUTE sp_describe_first_result_set @tsql = N'
EXECUTE(N''SELECT a FROM t1'');';
Íme egy részleges eredményhalmaz.
| Oszlop | Érték |
|---|---|
name |
a |
system_type_name |
int |
is_nullable |
1 |
Eredményhiba a dinamikus SQL-ből
Az első eredményhalmaz nincs meghatározva a dinamikus SQL miatt.
EXECUTE sp_describe_first_result_set @tsql = N'
DECLARE @SQL NVARCHAR(max);
SET @SQL = N''SELECT a FROM t1 WHERE 1 = 1'';
IF (1 = 1)
SET @SQL += N'' AND e > 10'';
EXECUTE(@SQL);';
Ez hibát eredményez. Az eredmény nem észlelhető a dinamikus SQL miatt.
Felhasználó által megadott eredménykészlet
Az első eredményhalmazt a felhasználó manuálisan adja meg.
EXECUTE sp_describe_first_result_set @tsql = N'
DECLARE @SQL NVARCHAR(max);
SET @SQL = N''SELECT a FROM t1 WHERE 1 = 1'';
IF (1 = 1)
SET @SQL += N'' AND e > 10'';
EXECUTE(@SQL)
WITH RESULT SETS (
(Column1 BIGINT NOT NULL)
);';
Íme egy részleges eredményhalmaz.
| Oszlop | Érték |
|---|---|
name |
Column1 |
system_type_name |
bigint |
is_nullable |
0 |
Nem egyértelmű eredményhalmaz által okozott hiba
Ez a példa feltételezi, hogy egy másik user1 nevű felhasználó egy t1 nevű táblával rendelkezik az alapértelmezett séma s1 oszlopokkal (a int NOT NULL).
EXECUTE sp_describe_first_result_set @tsql = N'
IF (@p > 0)
EXECUTE AS USER = ''user1'';
SELECT * FROM t1;', @params = N'@p int';
Ez a kód Invalid object name hibát eredményez.
t1 lehet dbo.t1 vagy s1.t1, mindegyikhez eltérő számú oszlop tartozik.
Eredmény kétértelmű eredménykészlettel is
Használja ugyanazokat a feltételezéseket, mint az előző példában.
EXECUTE sp_describe_first_result_set @tsql = N'
IF (@p > 0)
EXECUTE AS USER = ''user1'';
SELECT a FROM t1;';
Íme egy részleges eredményhalmaz.
| Oszlop | Érték |
|---|---|
name |
a |
system_type_name |
int |
is_nullable |
1 |
Mind dbo.t1.a, mind s1.t1.ainttípussal és különböző nullhiba-értékkel rendelkezik.