Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
Microsoft Fabric
Warehouse'da SQL analiz uç noktası
Transact-SQL toplu işleminin ilk olası sonuç kümesinin meta verilerini döndürür. Toplu işlem sonuç döndürmezse boş bir sonuç kümesi döndürür. Veritabanı Altyapısı statik bir analiz gerçekleştirerek yürütülecek ilk sorgunun meta verilerini belirleyemezse hataya neden olur. Dinamik yönetim görünümü sys.dm_exec_describe_first_result_set aynı bilgileri döndürür.
Transact-SQL söz dizimi kuralları
Sözdizimi
sp_describe_first_result_set [ @tsql = ] N'tsql'
[ , [ @params = ] N'@parameter_name data_type [ , ... n ]' ]
[ , [ @browse_information_mode = ] <tinyint> ]
[ ; ]
Bağımsız değişken
Önemli
Genişletilmiş saklı yordamlar için bağımsız değişkenler, Sözdizimi bölümünde açıklandığı gibi belirli bir sırada girilmelidir. Parametreler sıra dışı girilirse bir hata iletisi oluşur.
[ @tsql = ] 'tsql'
Bir veya daha fazla Transact-SQL deyimi. @tsqlnvarchar(n) veya nvarchar(max)olabilir.
[ @params = ] N'@parameter_namedata_type [ , ... n ]'
@params, Transact-SQL toplu işleminin parametreleri için sp_executesql
benzer bir bildirim dizesi sağlar. Parametreler nvarchar(n) veya nvarchar(max) olabilir.
@tsqleklenmiş tüm parametrelerin tanımlarını içeren bir dize. Dize bir Unicode sabiti veya Unicode değişkeni olmalıdır. Her parametre tanımı bir parametre adından ve bir veri türünden oluşur.
n, ek parametre tanımlarını gösteren bir yer tutucudur. deyiminde belirtilen her parametre @paramsiçinde tanımlanmalıdır. deyimindeki Transact-SQL deyimi veya toplu işlemi parametre içermiyorsa @params gerekli değildir.
NULL
bu parametre için varsayılan değerdir.
[ @browse_information_mode = ] tinyint
Ek anahtar sütunlarının ve kaynak tablo bilgilerinin döndürülip döndürülmediğini belirtir.
1
olarak ayarlanırsa, her sorgu, sorguda bir FOR BROWSE
seçeneği içeriyor gibi analiz edilir.
0
olarak ayarlanırsa hiçbir bilgi döndürülür.1
olarak ayarlanırsa, her sorgu, sorguda birFOR BROWSE
seçeneği içeriyor gibi analiz edilir. Bu, temel tablo adlarını kaynak sütun bilgileri olarak döndürür.2
olarak ayarlanırsa, her sorgu bir imleç hazırlanırken veya yürütülürken kullanılır gibi analiz edilir. Bu, görünüm adlarını kaynak sütun bilgileri olarak döndürür.
Dönüş kodu değerleri
sp_describe_first_result_set
her zaman başarı durumunda sıfır durumunu döndürür. Yordam bir hata oluşturursa ve yordam RPC olarak çağrılırsa, dönüş durumu sys.dm_exec_describe_first_result_set
error_type sütununda açıklanan hata türüyle doldurulur. Yordam Transact-SQL'den çağrılırsa, hata olduğunda bile dönüş değeri her zaman sıfır olur.
Sonuç kümesi
Bu ortak meta veriler, sonuç meta verilerindeki her sütun için bir satır içeren bir sonuç kümesi olarak döndürülür. Her satır, sütunun türünü ve null atanabilirliğini aşağıdaki bölümde açıklanan biçimde açıklar. Her denetim yolu için ilk deyim yoksa, sıfır satır içeren bir sonuç kümesi döndürülür.
Sütun adı | Veri tipi | Açıklama |
---|---|---|
is_hidden |
bit | Sütunun, göz atma bilgileri için eklenen ek bir sütun olduğunu ve sonuç kümesinde aslında görünmediğini gösterir. Boş değer atanamaz. |
column_ordinal |
Int | Sonuç kümesindeki sütunun sıralı konumunu içerir. İlk sütunun konumu 1 olarak belirtilir. Boş değer atanamaz. |
name |
sysname | Bir ad belirlenebiliyorsa sütunun adını içerir. Aksi takdirde, NULL içerir. Nullable. |
is_nullable |
bit | sütun 1 izin veriyorsa NULL değerini 0 sütun NULL izin vermiyorsa 1 NULL izin veriyorsa 1 . Boş değer atanamaz. |
system_type_id |
Int |
system_type_id 'de belirtildiği gibi sütunun veri türünün sys.types içerir. CLR türleri için, system_type_name sütunu NULL döndürse de, bu sütun 240 değerini döndürür. Boş değer atanamaz. |
system_type_name |
nvarchar(256) | Sütunun veri türü için belirtilen adı ve bağımsız değişkenleri (uzunluk, duyarlık, ölçek gibi) içerir. Veri türü kullanıcı tanımlı bir diğer ad türüyse, temel alınan sistem türü burada belirtilir. ClR kullanıcı tanımlı bir türse, bu sütunda NULL döndürülür. Nullable. |
max_length |
smallint | Sütunun uzunluk üst sınırı (bayt cinsinden).-1 = Sütun veri türü varchar(max), nvarchar(max), varbinary(max)veya xml.metin sütunlarda, max_length değeri 16 veya sp_tableoption 'text in row' tarafından ayarlanan değerdir. Boş değer atanamaz. |
precision |
tinyint | Sayısal tabanlıysa sütunun duyarlığı. Aksi takdirde 0 döndürür. Boş değer atanamaz. |
scale |
tinyint | Sayısal tabanlıysa sütunun ölçeği. Aksi takdirde 0 döndürür. Boş değer atanamaz. |
collation_name |
sysname | Karakter tabanlıysa sütunun harmanlamasının adı. Aksi takdirde NULL döndürür. Nullable. |
user_type_id |
Int | CLR ve diğer ad türleri için, user_type_id 'de belirtildiği gibi sütunun veri türünün sys.types içerir. Aksi takdirde NULL . Nullable. |
user_type_database |
sysname | CLR ve diğer ad türleri için, türün tanımlandığı veritabanının adını içerir. Aksi takdirde NULL . Nullable. |
user_type_schema |
sysname | CLR ve diğer ad türleri için, türün tanımlandığı şemanın adını içerir. Aksi takdirde NULL . Nullable. |
user_type_name |
sysname | CLR ve diğer ad türleri için türün adını içerir. Aksi takdirde NULL . Nullable. |
assembly_qualified_type_name |
nvarchar(4000) | CLR türleri için, türü tanımlayan derlemenin ve sınıfın adını döndürür. Aksi takdirde NULL . Nullable. |
xml_collection_id |
Int |
xml_collection_id 'de belirtildiği gibi sütunun veri türünün sys.columns içerir. Döndürülen tür bir XML şema koleksiyonuyla ilişkili değilse bu sütun NULL döndürür. Nullable. |
xml_collection_database |
sysname | Bu türle ilişkili XML şema koleksiyonunun tanımlandığı veritabanını içerir. Döndürülen tür bir XML şema koleksiyonuyla ilişkili değilse bu sütun NULL döndürür. Nullable. |
xml_collection_schema |
sysname | Bu türle ilişkili XML şema koleksiyonunun tanımlandığı şemayı içerir. Döndürülen tür bir XML şema koleksiyonuyla ilişkili değilse bu sütun NULL döndürür. Nullable. |
xml_collection_name |
sysname | Bu türle ilişkili XML şema koleksiyonunun adını içerir. Döndürülen tür bir XML şema koleksiyonuyla ilişkili değilse bu sütun NULL döndürür. Nullable. |
is_xml_document |
bit | Döndürülen veri türü XML ise 1 döndürür ve bu türün XML parçasının aksine tam bir XML belgesi (kök düğüm dahil) olması garanti edilir. Aksi takdirde 0 döndürür. Boş değer atanamaz. |
is_case_sensitive |
bit | Sütun büyük/küçük harfe duyarlı bir dize türündeyse 1 ve değilse 0 döndürür. Boş değer atanamaz. |
is_fixed_length_clr_type |
bit | Sütun sabit uzunlukta bir CLR türündeyse 1 ve değilse 0 döndürür. Boş değer atanamaz. |
source_server |
sysname | Bu sonuçtaki sütun tarafından döndürülen kaynak sunucunun adı (uzak sunucudan geliyorsa). Ad, sys.servers içinde göründüğü şekilde verilir. Sütunun kaynağı yerel sunucudaysa veya hangi sunucudan kaynaklandığı belirlenemiyorsa NULL döndürür. Yalnızca gözatma bilgileri isteniyorsa doldurulur. Nullable. |
source_database |
sysname | Bu sonuçtaki sütun tarafından döndürülen kaynak veritabanının adı. Veritabanı belirlenemiyorsa NULL döndürür. Yalnızca gözatma bilgileri isteniyorsa doldurulur. Nullable. |
source_schema |
sysname | Bu sonuçtaki sütun tarafından döndürülen kaynak şemanın adı. Şema belirlenemiyorsa NULL döndürür. Yalnızca gözatma bilgileri isteniyorsa doldurulur. Nullable. |
source_table |
sysname | Bu sonuçtaki sütun tarafından döndürülen kaynak tablonun adı. Tablo belirlenemiyorsa NULL döndürür. Yalnızca gözatma bilgileri isteniyorsa doldurulur. Nullable. |
source_column |
sysname | Sonuç sütunu tarafından döndürülen kaynak sütunun adı. Sütun belirlenemiyorsa NULL döndürür. Yalnızca gözatma bilgileri isteniyorsa doldurulur. Nullable. |
is_identity_column |
bit | Sütun bir kimlik sütunuysa 1 ve değilse 0 döndürür. Sütunun bir kimlik sütunu olduğu belirlenemezse NULL döndürür. Nullable. |
is_part_of_unique_key |
bit | Sütun benzersiz bir dizinin parçasıysa (benzersiz ve birincil kısıtlama dahil) 1 ve değilse 0 döndürür. Sütunun benzersiz bir dizinin parçası olduğu belirlenemezse NULL döndürür. Yalnızca gözatma bilgileri isteniyorsa doldurulur. Nullable. |
is_updateable |
bit | Sütunun güncelleştirilebilir olup olmadığını 1 ve güncelleştirilmediyse 0 döndürür. Sütunun güncelleştirilebilir olduğu belirlenemezse NULL döndürür. Nullable. |
is_computed_column |
bit | Sütun hesaplanan bir sütunsa 1 ve değilse 0 döndürür. Sütunun hesaplanan sütun olduğu belirlenemezse NULL döndürür. Nullable. |
is_sparse_column_set |
bit | Sütun seyrek bir sütunsa 1 ve değilse 0 döndürür. Sütunun seyrek sütun kümesinin parçası olduğu belirlenemezse NULL döndürür. Nullable. |
ordinal_in_order_by_list |
smallint | Bu sütunun ORDER BY listesindeki konumu. Sütun NULL listesinde görünmüyorsa veya ORDER BY listesi benzersiz olarak belirlenemiyorsa ORDER BY döndürür. Nullable. |
order_by_list_length |
smallint |
ORDER BY listesinin uzunluğu.
NULL liste yoksa veya ORDER BY listesi benzersiz olarak belirlenemiyorsa ORDER BY döndürür. Bu değer, sp_describe_first_result_set tarafından döndürülen tüm satırlar için aynıdır. Nullable. |
order_by_is_descending |
smallint |
ordinal_in_order_by_list
NULL değilse, order_by_is_descending sütunu bu sütun için ORDER BY yan tümcesinin yönünü bildirir. Aksi takdirde NULL bildirir. Nullable. |
tds_type_id |
Int | dahili kullanım için. Boş değer atanamaz. |
tds_length |
Int | dahili kullanım için. Boş değer atanamaz. |
tds_collation_id |
Int | dahili kullanım için. Nullable. |
tds_collation_sort_id |
tinyint | dahili kullanım için. Nullable. |
Açıklamalar
sp_describe_first_result_set
, yordam ilk sonuç kümesi meta verilerini (varsayımsal) A toplu işlemi için döndürürse ve bu toplu iş (A) yürütülürse toplu işlemin aşağıdakilerden birini garanti eder:
- bir iyileştirme zamanı hatası oluşturur
- çalışma zamanı hatasına neden olur
- sonuç kümesi döndürmez
-
sp_describe_first_result_set
tarafından açıklanan meta verileri içeren ilk sonuç kümesini döndürür
Ad, null atanabilirlik ve veri türü farklı olabilir.
sp_describe_first_result_set
boş bir sonuç kümesi döndürürse, toplu yürütmenin sonuç kümeleri döndürmediği garanti edilir.
Bu garanti, sunucuda ilgili şema değişiklikleri olmadığı varsayılır. Sunucudaki ilgili şema değişiklikleri, A toplu işleminde sp_describe_first_result_set
çağrılır ve sonuç kümesinin yürütme sırasında döndürüldiği süre (B toplu işlemi tarafından yapılan şema değişiklikleri dahil) arasında geçici tablolar veya tablo değişkenleri oluşturmayı içermez.
sp_describe_first_result_set
aşağıdaki durumlardan herhangi birinde hata döndürür:
Giriş @tsql geçerli bir Transact-SQL toplu işlemi değildir. Geçerlilik, Transact-SQL toplu işlemini ayrıştırarak ve analiz ederek belirlenir. Sorgu iyileştirme sırasında veya yürütme sırasında toplu işlemden kaynaklanan hatalar, Transact-SQL toplu işleminin geçerli olup olmadığı belirlenirken dikkate alınmaz.
@params
NULL
değildir ve parametreler için söz dizimsel olarak geçerli olmayan bir bildirim dizesi veya herhangi bir parametreyi birden çok kez bildiren bir dize içeriyorsa bir dize içerir.Giriş Transact-SQL toplu işlemi, @paramsiçinde bildirilen bir parametreyle aynı ada sahip bir yerel değişken bildirir.
deyimi geçici bir tablo kullanır.
Sorgu, daha sonra sorgulanan kalıcı bir tablo oluşturmayı içerir.
Diğer tüm denetimler başarılı olursa, giriş toplu işleminin içindeki tüm olası denetim akışı yolları dikkate alınır. Bu, tüm denetim akışı deyimlerini (GOTO
, IF
/ELSE
, WHILE
ve Transact-SQL TRY
/CATCH
blokları) ve tüm yordamları dikkate alır, dinamik Transact-SQL toplu işlemleri veya bir EXECUTE
deyimi tarafından giriş toplu işleminden çağrılan tetikleyiciler, DDL tetikleyicilerinin tetiklenmesine neden olan bir DDL deyimi veya hedef tabloda veya bir tablo üzerinde basamaklı eylem nedeniyle değiştirilen bir tabloda tetikleyicilerin tetiklenmesine neden olan bir DML deyimi yabancı anahtar kısıtlaması. Bir noktada, birçok olası denetim yolunda olduğu gibi bir algoritma durdurulur.
Her denetim akışı yolu için, bir sonuç kümesi döndüren ilk deyim (varsa) sp_describe_first_result_set
tarafından belirlenir.
Bir toplu işlemde birden çok olası ilk deyim bulunduğunda, sonuçları sütun sayısı, sütun adı, null atanabilirlik ve veri türü bakımından farklılık gösterebilir. Bu farklılıkların nasıl ele alındığı burada daha ayrıntılı olarak açıklanmıştır:
Sütun sayısı farklıysa bir hata oluşur ve sonuç döndürülür.
Sütun adı farklıysa, döndürülen sütun adı
NULL
olarak ayarlanır.Null atanabilirlik farklıysa, döndürülen null atanabilirlik
NULL
izin verir.Veri türü farklıysa bir hata oluşur ve aşağıdaki durumlar dışında hiçbir sonuç döndürülür:
- varchar(a)varchar(a') a' >.
- varchar(a) varchar(max)
- nvarchar(a)nvarchar(a') a' >.
- nvarchar(a)nvarchar(max)
- varbinary(a)varbinary(a') a' >.
- varbinary(a) varbinary(max)
sp_describe_first_result_set
dolaylı özyinelemesi desteklemez.
İzinler
@tsql bağımsız değişkenini yürütmek için izin gerektirir.
Örnekler
Tipik örnekler
A. Temel örnek
Aşağıdaki örnekte tek bir sorgudan döndürülen sonuç kümesi açıklanmaktadır.
EXECUTE sp_describe_first_result_set @tsql = N'SELECT object_id, name, type_desc FROM sys.indexes';
Aşağıdaki örnek, parametre içeren tek bir sorgudan döndürülen sonuç kümesini gösterir.
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. Gözatma modu örnekleri
Aşağıdaki üç örnek, farklı göz atma bilgileri modları arasındaki temel farkı göstermektedir. Sorgu sonuçlarına yalnızca ilgili sütunlar eklenir.
0
kullanma örneği, hiçbir bilgi döndürülmedi.
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;
Kısmi bir sonuç kümesi aşağıdadır.
gizli | sütun_sırası | ad | source_schema | source_table | source_column | is_part_of_unique_key |
---|---|---|---|---|---|---|
0 |
1 | b3 | NULL |
NULL |
NULL |
NULL |
Sorguda FOR BROWSE seçeneği içeriyor gibi bilgi döndürdüğüne işaret eden 1 kullanan örnek.
EXECUTE sp_describe_first_result_set N'SELECT b2 AS b3 FROM v', NULL, 1;
Kısmi bir sonuç kümesi aşağıdadır.
gizli | sütun_sırası | ad | 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 |
İmleç hazırlar gibi analiz edilen 2 kullanan örnek.
EXECUTE sp_describe_first_result_set N'SELECT b2 AS b3 FROM v', NULL, 2;
Sonuç kümesi aşağıdadır.
gizli | sütun_sırası | ad | 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. Sonuçları tabloda depolama
Bazı senaryolarda, şemayı daha fazla işleyebilmeniz için sp_describe_first_result_set
yordamının sonuçlarını bir tabloya yerleştirmeniz gerekir.
İlk olarak sp_describe_first_result_set
yordamının çıkışıyla eşleşen bir tablo oluşturmanız gerekir:
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
);
Tablo oluşturduğunuzda, bir sorgunun şemasını bu tabloda depolayabilirsiniz.
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;
Sorun örnekleri
Aşağıdaki örneklerde tüm örnekler için iki tablo kullanılır. Örnek tabloları oluşturmak için aşağıdaki deyimleri yürütür.
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
);
Sütun sayısı farklı olduğundan hata oluştu
Olası ilk sonuç kümelerindeki sütun sayısı bu örnekte farklılık gösterir.
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.';
Veri türleri farklı olduğundan hata oluştu
Sütun türleri farklı olası ilk sonuç kümelerinde farklılık gösterir.
EXECUTE sp_describe_first_result_set @tsql = N'
IF (1 = 1)
SELECT a FROM t1;
ELSE
SELECT a FROM t2;';
Bu, uyuşmazlık türleriyle sonuçlanır (int ile smallint).
Sütun adı belirlenemiyor
Olası ilk sonuç kümelerindeki sütunlar, aynı değişken uzunluğu türü, null atanabilirlik ve sütun adları için uzunluğa göre farklılık gösterir:
EXECUTE sp_describe_first_result_set @tsql = N'
IF (1 = 1)
SELECT b FROM t1;
ELSE
SELECT d FROM t2;';
Kısmi bir sonuç kümesi aşağıdadır.
Sütun | Değer |
---|---|
name |
Bilinmeyen sütun adı |
system_type_name |
varchar |
max_length |
20 |
is_nullable |
1 |
Diğer ad aracılığıyla sütun adı aynı olmaya zorlandı
Öncekiyle aynı, ancak sütun diğer adları aracılığıyla sütunların adı aynı olur.
EXECUTE sp_describe_first_result_set @tsql = N'
IF (1 = 1)
SELECT b FROM t1;
ELSE
SELECT d AS b FROM t2;';
Kısmi bir sonuç kümesi aşağıdadır.
Sütun | Değer |
---|---|
name |
b |
system_type_name |
varchar |
max_length |
20 |
is_nullable |
1 |
Sütun türleri eşleştirilemediği için hata oluştu
Sütun türleri farklı olası ilk sonuç kümelerinde farklılık gösterir.
EXECUTE sp_describe_first_result_set @tsql = N'
IF (1 = 1)
SELECT b FROM t1;
ELSE
SELECT c FROM t1;';
Bu, eşleşmeyen türler (varchar(10) ve nvarchar(10)) hatasıyla sonuçlanır.
Sonuç kümesi hata döndürebilir
İlk sonuç kümesi hata veya sonuç kümesidir.
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.';
Kısmi bir sonuç kümesi aşağıdadır.
Sütun | Değer |
---|---|
name |
a |
system_type_name |
int |
is_nullable |
1 |
Bazı kod yolları sonuç döndürmez
İlk sonuç kümesi null veya sonuç kümesidir.
EXECUTE sp_describe_first_result_set @tsql = N'
IF (1 = 1)
RETURN;
SELECT a FROM t1;';
Kısmi bir sonuç kümesi aşağıdadır.
Sütun | Değer |
---|---|
name |
a |
system_type_name |
int |
is_nullable |
1 |
Dinamik SQL sonucu
İlk sonuç kümesi, sabit bir dize olduğundan bulunabilen dinamik SQL'dir.
EXECUTE sp_describe_first_result_set @tsql = N'
EXECUTE(N''SELECT a FROM t1'');';
Kısmi bir sonuç kümesi aşağıdadır.
Sütun | Değer |
---|---|
name |
a |
system_type_name |
int |
is_nullable |
1 |
Dinamik SQL'den sonuç hatası
İlk sonuç kümesi, dinamik SQL nedeniyle tanımsız.
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);';
Bu bir hatayla sonuçlanır. Sonuç, dinamik SQL nedeniyle bulunamıyor.
Kullanıcı tarafından belirtilen sonuç kümesi
İlk sonuç kümesi kullanıcı tarafından el ile belirtilir.
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)
);';
Kısmi bir sonuç kümesi aşağıdadır.
Sütun | Değer |
---|---|
name |
Column1 |
system_type_name |
bigint |
is_nullable |
0 |
Belirsiz bir sonuç kümesinin neden olduğu hata
Bu örnekte, user1
adlı başka bir kullanıcının varsayılan şemada t1
adlı bir tablosu olduğu varsayılır s1
sütunlu (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';
Bu kod bir Invalid object name
hatasıyla sonuçlanır.
t1
her biri farklı sayıda sütuna sahip dbo.t1
veya s1.t1
olabilir.
Belirsiz sonuç kümesiyle bile sonuç
Önceki örnekle aynı varsayımları kullanın.
EXECUTE sp_describe_first_result_set @tsql = N'
IF (@p > 0)
EXECUTE AS USER = ''user1'';
SELECT a FROM t1;';
Kısmi bir sonuç kümesi aşağıdadır.
Sütun | Değer |
---|---|
name |
a |
system_type_name |
int |
is_nullable |
1 |
Hem dbo.t1.a
hem de s1.t1.a
türü intve farklı null atanabilirliğe sahiptir.