sp_describe_first_result_set (Transact-SQL)
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Platform Platform System (PDW)
koncový bod SQL Analytics ve službě Microsoft Fabric
Warehouse v Microsoft Fabric
Vrátí metadata pro první možnou sadu výsledků dávky Transact-SQL. Vrátí prázdnou sadu výsledků, pokud dávka nevrátí žádné výsledky. Vyvolá chybu, pokud databázový stroj nedokáže určit metadata prvního dotazu, který se spustí provedením statické analýzy. Zobrazení dynamické správy sys.dm_exec_describe_first_result_set vrátí stejné informace.
Syntax
sp_describe_first_result_set [ @tsql = ] N'tsql'
[ , [ @params = ] N'@parameter_name data_type [ , ... n ]' ]
[ , [ @browse_information_mode = ] <tinyint> ]
[ ; ]
Argumenty
Důležitý
Argumenty rozšířených uložených procedur musí být zadány v určitém pořadí, jak je popsáno v části Syntaxe. Pokud jsou parametry zadány mimo pořadí, dojde k chybové zprávě.
[ @tsql = ]tsql
Jeden nebo více příkazů Transact-SQL. @tsql může být nvarchar(n) nebo nvarchar(max).
[ @params = ] N'@parameter_namedata_type [ , ... n ]'
@params poskytuje řetězec deklarace pro parametry pro Transact-SQL dávku, která se podobá sp_executesql
. Parametry mohou být nvarchar(n) nebo nvarchar(max).
Řetězec, který obsahuje definice všech parametrů, které jsou vloženy v @tsql. Řetězec musí být buď konstanta Unicode, nebo proměnná Unicode. Každá definice parametru se skládá z názvu parametru a datového typu.
n je zástupný symbol označující další definice parametrů. Každý parametr zadaný v příkazu musí být definován v @params. Pokud příkaz Transact-SQL nebo dávka v příkazu neobsahují parametry, @params se nevyžaduje.
NULL
je výchozí hodnota tohoto parametru.
[ @browse_information_mode = ] tinyint
Určuje, jestli se vrátí další klíčové sloupce a informace o zdrojové tabulce. Pokud je nastavená hodnota 1
, každý dotaz se analyzuje, jako by obsahoval možnost FOR BROWSE
dotazu.
Pokud je nastavená hodnota
0
, nevrátí se žádné informace.Pokud je nastavená hodnota
1
, každý dotaz se analyzuje, jako by obsahoval možnostFOR BROWSE
dotazu. Vrátí se názvy základních tabulek jako informace o zdrojovém sloupci.Pokud je nastavená hodnota
2
, každý dotaz se analyzuje, jako by se použil při přípravě nebo spuštění kurzoru. Vrátí se názvy zobrazení jako informace o zdrojovém sloupci.
Návratové hodnoty kódu
sp_describe_first_result_set
vždy vrátí stav nuly při úspěchu. Pokud procedura vyvolá chybu a procedura je volána jako RPC, stav návratu je naplněn typem chyby popsané ve sloupci error_type sys.dm_exec_describe_first_result_set
. Pokud je procedura volána z Jazyka Transact-SQL, návratová hodnota je vždy nula, i když dojde k chybě.
Sada výsledků
Tato běžná metadata se vrátí jako sada výsledků s jedním řádkem pro každý sloupec v metadatech výsledků. Každý řádek popisuje typ a hodnotu null sloupce ve formátu popsaném v následující části. Pokud první příkaz neexistuje pro každou cestu ovládacího prvku, vrátí se sada výsledků s nulovými řádky.
Název sloupce | Datový typ | Popis |
---|---|---|
is_hidden |
bitová | Označuje, že sloupec je další sloupec přidaný pro účely procházení informací a že se ve skutečnosti nezobrazuje v sadě výsledků. Nelze použít hodnotu null. |
column_ordinal |
int | Obsahuje pořadové umístění sloupce v sadě výsledků. Pozice prvního sloupce je určena jako 1 . Nelze použít hodnotu null. |
name |
sysname | Obsahuje název sloupce, pokud lze určit název. V opačném případě obsahuje NULL . Nullable. |
is_nullable |
bitová | Obsahuje hodnotu, 1 pokud sloupec umožňuje NULL , 0 pokud sloupec nepovoluje NULL , a 1 , pokud sloupec neumožňuje NULL . Nelze použít hodnotu null. |
system_type_id |
int | Obsahuje system_type_id datového typu sloupce, jak je uvedeno v sys.types . U typů CLR, i když sloupec system_type_name vrací NULL , vrátí tento sloupec hodnotu 240 . Nelze použít hodnotu null. |
system_type_name |
nvarchar(256) | Obsahuje název a argumenty (například délku, přesnost, měřítko) určené pro datový typ sloupce. Pokud je datový typ typu alias definovaný uživatelem, je zde uvedený základní systémový typ. Pokud se jedná o uživatelem definovaný typ CLR, NULL se vrátí v tomto sloupci. Nullable. |
max_length |
malé | Maximální délka sloupce (v bajtech).-1 = datový typ sloupec je varchar(max), nvarchar(max), varbinary(max)nebo xml.U textových sloupců je hodnota max_length 16 nebo hodnota nastavená sp_tableoption 'text in row' . Nelze použít hodnotu null. |
precision |
tinyint | Přesnost sloupce, pokud je založená na číselném formátu. V opačném případě vrátí 0 . Nelze použít hodnotu null. |
scale |
tinyint | Měřítko sloupce, pokud je založené na numerickém formátu. V opačném případě vrátí 0 . Nelze použít hodnotu null. |
collation_name |
sysname | Název kolace sloupce, pokud je založen na znakech. V opačném případě vrátí NULL . Nullable. |
user_type_id |
int | U typů CLR a aliasů obsahuje user_type_id datového typu sloupce, jak je uvedeno v sys.types . Jinak je NULL . Nullable. |
user_type_database |
sysname | Pro typy CLR a aliasů obsahuje název databáze, ve které je typ definován. Jinak je NULL . Nullable. |
user_type_schema |
sysname | U typů CLR a aliasů obsahuje název schématu, ve kterém je typ definován. Jinak je NULL . Nullable. |
user_type_name |
sysname | U typů CLR a aliasů obsahuje název typu. Jinak je NULL . Nullable. |
assembly_qualified_type_name |
nvarchar(4000) | U typů CLR vrátí název sestavení a třídy definující typ. Jinak je NULL . Nullable. |
xml_collection_id |
int | Obsahuje xml_collection_id datového typu sloupce, jak je uvedeno v sys.columns . Tento sloupec vrátí NULL , pokud vrácený typ není přidružen ke kolekci schémat XML. Nullable. |
xml_collection_database |
sysname | Obsahuje databázi, ve které je definována kolekce schématu XML přidružená k tomuto typu. Tento sloupec vrátí NULL , pokud vrácený typ není přidružen ke kolekci schémat XML. Nullable. |
xml_collection_schema |
sysname | Obsahuje schéma, ve kterém je definována kolekce schémat XML přidružená k tomuto typu. Tento sloupec vrátí NULL , pokud vrácený typ není přidružen ke kolekci schémat XML. Nullable. |
xml_collection_name |
sysname | Obsahuje název kolekce schématu XML přidruženou k tomuto typu. Tento sloupec vrátí NULL , pokud vrácený typ není přidružen ke kolekci schémat XML. Nullable. |
is_xml_document |
bitová | Vrátí 1 , pokud je vrácený datový typ XML a tento typ je zaručen úplný dokument XML (včetně kořenového uzlu), na rozdíl od fragmentu XML. V opačném případě vrátí 0 . Nelze použít hodnotu null. |
is_case_sensitive |
bitová | Vrátí 1 , pokud je sloupec typ řetězce rozlišující velká a malá písmena a 0 , pokud tomu tak není. Nelze použít hodnotu null. |
is_fixed_length_clr_type |
bitová | Vrátí 1 , pokud je sloupec typem CLR s pevnou délkou a 0 , pokud tomu tak není. Nelze použít hodnotu null. |
source_server |
sysname | Název původního serveru vráceného sloupcem v tomto výsledku (pokud pochází ze vzdáleného serveru). Název je uveden tak, jak se zobrazí v sys.servers . Vrátí NULL , pokud sloupec pochází z místního serveru nebo pokud se nedá určit, na kterém serveru pochází. Je vyplněna pouze v případě, že jsou požadovány informace o procházení. Nullable. |
source_database |
sysname | Název původní databáze vrácené sloupcem v tomto výsledku Vrátí NULL , pokud databázi nelze určit. Je vyplněna pouze v případě, že jsou požadovány informace o procházení. Nullable. |
source_schema |
sysname | Název původního schématu vráceného sloupcem v tomto výsledku Vrátí NULL , pokud schéma nelze určit. Je vyplněna pouze v případě, že jsou požadovány informace o procházení. Nullable. |
source_table |
sysname | Název původní tabulky vrácené sloupcem v tomto výsledku Vrátí NULL , pokud tabulku nelze určit. Je vyplněna pouze v případě, že jsou požadovány informace o procházení. Nullable. |
source_column |
sysname | Název původního sloupce vráceného výsledným sloupcem Vrátí NULL , pokud sloupec nelze určit. Je vyplněna pouze v případě, že jsou požadovány informace o procházení. Nullable. |
is_identity_column |
bitová | Vrátí 1 , pokud je sloupec sloupcem identity a 0 , pokud ne. Vrátí NULL , pokud se nedá určit, že sloupec je sloupec identity. Nullable. |
is_part_of_unique_key |
bitová | Vrátí 1 , pokud je sloupec součástí jedinečného indexu (včetně jedinečného a primárního omezení) a 0 , pokud ne. Vrátí NULL , pokud se nedá určit, že je sloupec součástí jedinečného indexu. Vyplněno pouze v případě, že jsou požadovány informace o procházení. Nullable. |
is_updateable |
bitová | Vrátí 1 , pokud je sloupec aktualizovatelný a pokud ne, 0 . Vrátí NULL , pokud se nedá určit, že sloupec je aktualizovatelný. Nullable. |
is_computed_column |
bitová | Vrátí 1 , pokud je sloupec počítaný sloupec a 0 , pokud ne. Vrátí NULL , pokud se nedá určit, že sloupec je počítaný sloupec. Nullable. |
is_sparse_column_set |
bitová | Vrátí 1 , pokud je sloupec řídkým sloupcem a 0 , pokud ne. Vrátí NULL , pokud se nedá určit, že je sloupec součástí řídké sady sloupců. Nullable. |
ordinal_in_order_by_list |
malé | Pozice tohoto sloupce v seznamu ORDER BY Vrátí NULL , pokud se sloupec nezobrazí v seznamu ORDER BY nebo pokud ORDER BY seznam nelze jednoznačně určit. Nullable. |
order_by_list_length |
malé | Délka seznamu ORDER BY Vrátí NULL , pokud neexistuje žádný seznam ORDER BY nebo pokud seznam ORDER BY nelze jednoznačně určit. Tato hodnota je stejná pro všechny řádky vrácené sp_describe_first_result_set . Nullable. |
order_by_is_descending |
malé | Pokud ordinal_in_order_by_list není NULL , sloupec order_by_is_descending hlásí směr klauzule ORDER BY pro tento sloupec. V opačném případě hlásí NULL . Nullable. |
tds_type_id |
int | Pro interní použití. Nelze použít hodnotu null. |
tds_length |
int | Pro interní použití. Nelze použít hodnotu null. |
tds_collation_id |
int | Pro interní použití. Nullable. |
tds_collation_sort_id |
tinyint | Pro interní použití. Nullable. |
Poznámky
sp_describe_first_result_set
zaručuje, že pokud procedura vrátí první metadata sady výsledků pro (hypotetickou) dávku A a pokud je tato dávka (A) následně provedena, dávka buď:
- vyvolá chybu v době optimalizace.
- vyvolá chybu za běhu.
- vrátí žádnou sadu výsledků.
- vrátí první sadu výsledků se stejnými metadaty popsanými
sp_describe_first_result_set
Název, hodnota nullability a datový typ se mohou lišit. Pokud sp_describe_first_result_set
vrátí prázdnou sadu výsledků, záruka je, že dávkové spuštění vrátí žádné sady výsledků.
Tato záruka předpokládá, že na serveru nejsou žádné relevantní změny schématu. Relevantní změny schématu na serveru nezahrnují vytvoření dočasných tabulek nebo proměnných tabulek v dávce A mezi dobou volání sp_describe_first_result_set
a časem, kdy se sada výsledků vrátí během provádění, včetně změn schématu provedených dávkou B.
sp_describe_first_result_set
vrátí chybu v některém z následujících případů:
Vstupní @tsql není platná Transact-SQL dávka. Platnost se určuje analýzou a analýzou dávky Transact-SQL. Jakékoli chyby způsobené dávkou při optimalizaci dotazů nebo během provádění se při určování, jestli je dávka Transact-SQL platná, nepovažují.
@params není
NULL
a obsahuje řetězec, který není syntakticky platný řetězec deklarace parametrů nebo obsahuje řetězec, který deklaruje jakýkoli parametr vícekrát.Vstupní Transact-SQL dávka deklaruje místní proměnnou se stejným názvem jako parametr deklarovaný v @params.
Příkaz používá dočasnou tabulku.
Dotaz zahrnuje vytvoření trvalé tabulky, která se pak dotazuje.
Pokud všechny ostatní kontroly proběhnou úspěšně, považují se za všechny možné cesty toku řízení uvnitř vstupní dávky. To bere v úvahu všechny příkazy toku řízení (GOTO
, IF
/ELSE
, WHILE
a Transact-SQL TRY
/CATCH
bloky) a všechny postupy, dynamické Transact-SQL dávky nebo triggery vyvolané ze vstupní dávky příkazem EXEC
, příkazem DDL, který způsobí aktivaci triggerů DDL, nebo příkaz DML, který způsobí aktivaci triggerů v cílové tabulce nebo v tabulce upravené kvůli kaskádové akci na objektu omezení cizího klíče. V určitém okamžiku, stejně jako u mnoha možných řídicích cest, se algoritmus zastaví.
Pro každou cestu toku řízení je první příkaz (pokud existuje), který vrací sadu výsledků, určen sp_describe_first_result_set
.
Pokud se v dávce najde více možných prvních příkazů, jejich výsledky se mohou lišit v počtu sloupců, názvu sloupce, možnosti null a datovém typu. Jak se tyto rozdíly zpracovávají, jsou podrobněji popsány tady:
Pokud se počet sloupců liší, vyvolá se chyba a nevrátí se žádný výsledek.
Pokud se název sloupce liší, je vrácený název sloupce nastaven na
NULL
.Pokud se hodnota null liší, vrácená možnost null umožňuje
NULL
.Pokud se datový typ liší, vyvolá se chyba a nevrátí se žádný výsledek s výjimkou následujících případů:
- varchar(a)varchar(a') kde > a.
- varchar(a)varchar(max)
- nvarchar(a)nvarchar(a') kde > a.
- nvarchar(a) nvarchar(max)
- varbinary(a)varbinary(a'), kde > a.
- varbinary(a) varbinary(max)
sp_describe_first_result_set
nepodporuje nepřímou rekurzi.
Dovolení
Vyžaduje oprávnění ke spuštění argumentu @tsql.
Příklady
Typické příklady
A. Základní příklad
Následující příklad popisuje sadu výsledků vrácenou z jednoho dotazu.
EXEC sp_describe_first_result_set @tsql = N'SELECT object_id, name, type_desc FROM sys.indexes';
Následující příklad ukazuje sadu výsledků vrácenou z jednoho dotazu, který obsahuje parametr.
EXEC 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říklady režimu procházení
Následující tři příklady ilustrují klíčový rozdíl mezi různými režimy informací procházení. Do výsledků dotazu se zahrnou jenom relevantní sloupce.
Příklad použití 0
označující, že nejsou vráceny žádné informace.
CREATE TABLE dbo.t (
a INT PRIMARY KEY,
b1 INT
);
GO
CREATE VIEW dbo.v AS
SELECT b1 AS b2
FROM dbo.t;
GO
EXEC sp_describe_first_result_set N'SELECT b2 AS b3 FROM dbo.v', NULL, 0;
Tady je částečná sada výsledků.
is_hidden | column_ordinal | Jméno | source_schema | source_table | source_column | is_part_of_unique_key |
---|---|---|---|---|---|---|
0 |
1 | b3 | NULL |
NULL |
NULL |
NULL |
Příklad použití 1 označující, že vrací informace, jako by obsahoval možnost FOR BROWSE v dotazu.
EXEC sp_describe_first_result_set N'SELECT b2 AS b3 FROM v', NULL, 1;
Tady je částečná sada výsledků.
is_hidden | column_ordinal | Jméno | source_schema | source_table | source_column | is_part_of_unique_key |
---|---|---|---|---|---|---|
0 |
1 | b3 | Dbo | t | B1 | 0 |
1 |
2 | a | Dbo | t | a | 1 |
Příklad použití 2 označující analyzované, jako kdybyste připravili kurzor.
EXEC sp_describe_first_result_set N'SELECT b2 AS b3 FROM v', NULL, 2;
Tady je sada výsledků.
is_hidden | column_ordinal | Jméno | 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. Uložení výsledků v tabulce
V některých scénářích je potřeba vložit výsledky sp_describe_first_result_set
procedury do tabulky, aby bylo možné schéma dále zpracovat.
Nejprve je potřeba vytvořit tabulku, která odpovídá výstupu sp_describe_first_result_set
postupu:
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
);
Při vytváření tabulky můžete v této tabulce uložit schéma určitého dotazu.
DECLARE @tsql NVARCHAR(MAX) = 'select top 0 * from sys.credentials';
INSERT INTO #frs
EXEC sys.sp_describe_first_result_set @tsql;
SELECT * FROM #frs;
Příklady problémů
Následující příklady používají dvě tabulky pro všechny příklady. Spuštěním následujících příkazů vytvořte ukázkové tabulky.
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
);
Chyba, protože počet sloupců se liší
Počet sloupců v možných prvních sadách výsledků se v tomto příkladu liší.
EXEC 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.';
Chyba, protože se datové typy liší
Typy sloupců se liší v různých možných prvních sadách výsledků.
EXEC sp_describe_first_result_set @tsql = N'
IF (1 = 1)
SELECT a FROM t1;
ELSE
SELECT a FROM t2;';
Výsledkem je chyba neshod typů (int vs. smallint).
Název sloupce nelze určit.
Sloupce v možných prvních sadách výsledků se liší délkou pro stejný typ proměnné, hodnotu nullability a názvy sloupců:
EXEC sp_describe_first_result_set @tsql = N'
IF (1 = 1)
SELECT b FROM t1;
ELSE
SELECT d FROM t2;';
Tady je částečná sada výsledků.
Sloupec | Hodnota |
---|---|
name |
Neznámý název sloupce |
system_type_name |
varchar |
max_length |
20 |
is_nullable |
1 |
Název sloupce vynucený být identický prostřednictvím aliasingu
Stejné jako v předchozím případě, ale sloupce mají stejný název prostřednictvím aliasů sloupců.
EXEC sp_describe_first_result_set @tsql = N'
IF (1 = 1)
SELECT b FROM t1;
ELSE
SELECT d AS b FROM t2;';
Tady je částečná sada výsledků.
Sloupec | Hodnota |
---|---|
name |
b |
system_type_name |
varchar |
max_length |
20 |
is_nullable |
1 |
Chyba, protože typy sloupců se nedají spárovat
Typy sloupců se liší v různých možných prvních sadách výsledků.
EXEC sp_describe_first_result_set @tsql = N'
IF (1 = 1)
SELECT b FROM t1;
ELSE
SELECT c FROM t1;';
Výsledkem je chyba neshod typů (varchar(10) vs. nvarchar(10)).
Sada výsledků může vrátit chybu.
První sada výsledků je buď chyba, nebo sada výsledků.
EXEC 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.';
Tady je částečná sada výsledků.
Sloupec | Hodnota |
---|---|
name |
a |
system_type_name |
int |
is_nullable |
1 |
Některé cesty kódu nevrací žádné výsledky.
První sada výsledků je null nebo sada výsledků.
EXEC sp_describe_first_result_set @tsql = N'
IF (1 = 1)
RETURN;
SELECT a FROM t1;';
Tady je částečná sada výsledků.
Sloupec | Hodnota |
---|---|
name |
a |
system_type_name |
int |
is_nullable |
1 |
Výsledek z dynamického SQL
První sada výsledků je dynamická sql, která je zjistitelná, protože se jedná o řetězec literálu.
EXEC sp_describe_first_result_set @tsql = N'
EXEC(N''SELECT a FROM t1'');';
Tady je částečná sada výsledků.
Sloupec | Hodnota |
---|---|
name |
a |
system_type_name |
int |
is_nullable |
1 |
Selhání výsledku z dynamického SQL
První sada výsledků není definována kvůli dynamickému SQL.
EXEC 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'';
EXEC(@SQL);';
Výsledkem je chyba. Výsledek není zjistitelný kvůli dynamickému SQL.
Sada výsledků zadaná uživatelem
První sada výsledků je určena uživatelem ručně.
EXEC 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'';
EXEC(@SQL)
WITH RESULT SETS (
(Column1 BIGINT NOT NULL)
);';
Tady je částečná sada výsledků.
Sloupec | Hodnota |
---|---|
name |
Column1 |
system_type_name |
bigint |
is_nullable |
0 |
Chyba způsobená nejednoznačným souborem výsledků
Tento příklad předpokládá, že jiný uživatel s názvem user1
má tabulku s názvem t1
ve výchozím schématu s1
se sloupci (a int NOT NULL
).
EXEC sp_describe_first_result_set @tsql = N'
IF (@p > 0)
EXECUTE AS USER = ''user1'';
SELECT * FROM t1;',
@params = N'@p int';
Výsledkem tohoto kódu je chyba Invalid object name
.
t1
může být dbo.t1
nebo s1.t1
, každý s jiným počtem sloupců.
Výsledek i s nejednoznačnými sadami výsledků
Použijte stejné předpoklady jako v předchozím příkladu.
EXEC sp_describe_first_result_set @tsql =
N'
IF (@p > 0)
EXECUTE AS USER = ''user1'';
SELECT a FROM t1;';
Tady je částečná sada výsledků.
Sloupec | Hodnota |
---|---|
name |
a |
system_type_name |
int |
is_nullable |
1 |
dbo.t1.a
i s1.t1.a
mají typ inta jinou hodnotu nullability.
Související obsah
- sp_describe_undeclared_parameters (Transact-SQL)
- sys.dm_exec_describe_first_result_set (Transact-SQL)
- sys.dm_exec_describe_first_result_set_for_object (Transact-SQL)