sp_describe_first_result_set (Transact-sql)

İlk olası sonuç kümesi için meta verileri döndürür Transact-SQLtoplu. Toplu işlem sonuç döndürürse ayarlamak boş bir sonuç döndürür. Eğer bir hata tutarsa Veritabanı Altyapısıstatik bir çözümlemesini yaparak çalıştırılacak ilk sorgu için meta verileri belirleyemiyor. Dinamik yönetimi görünümü sys.dm_exec_describe_first_result_set (Transact-sql)aynı bilgileri verir.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

sp_describe_first_result_set [ @tsql = ] N'Transact-SQL_batch' 
    [ , [ @params = ] N'parameters' ] 
    [ , [ @browse_information_mode = ] <tinyint> ] ]

Bağımsız değişkenler

  • @tsql = 'Transact-SQL_batch'
    Bir veya daha fazla Transact-SQLdeyimleri. Transact-SQL_batch may be nvarchar(n) or nvarchar(max).

  • @params = n'parameters'
    @ params sağlar bir bildiri dize parametreleri için Transact-SQLsp_executesql için benzer toplu iş. Parametreleri olabilir nvarchar(n)ya nvarchar(max).

    İçinde katıştırılmış tüm parametreleri tanımları içeren bir dizedir Transact-SQL_batch. Unicode sabit ya da değişken Unicode dize olmalıdır. Her parametre tanımı, parametre adı ve veri türü oluşur. n ek parametre tanımları gösteren bir yer tutucudur. Deyiminde belirtilen her parametre @ params içinde tanımlanmalıdır. Eğer Transact-SQL@ params gerekli değil, bildirimi veya toplu deyiminde parametre içermiyor. Bu parametre için varsayılan değer null olur.

  • @ browse_information_mode = tinyint
    Ek anahtar sütunları ve kaynak tablo bilgileri döndürülür, belirtir. Eğer sanki o sorgu için bir seçenek içerir kümesi 1, her sorgu için analiz edilir. Ek anahtar sütunları ve kaynak tablo bilgileri döndürülür.

    • 0 Olarak ayarlanırsa, hiçbir bilgi verilir Eğer.

    • Eğer sanki o sorgu için bir seçenek içerir kümesi 1, her sorgu için analiz edilir. Bu kaynak sütun bilgileri gibi temel tablo adlarını döndürür.

    • Sanki hazırlama veya imleç yürütme kullanılacak 2 olarak ayarlayın, her sorgu analiz edilir eğer. Bu görünüm adları kaynak sütun bilgilerini döndürür.

Dönüş Kodu Değerleri

sp_describe_first_result_set her zaman sıfır başarı durumu döndürür. Yordamı bir hata atar ve yordamı bir rpc adlandırılır, durumu nüfusun error_type sütununda açıklanan hata türüne göre iade sys.dm_exec_describe_first_result_set. Yordam dan çağrılırsa Transact-SQL, bile bir hata olduğunda dönüş değeri her zaman, sıfırdır.

Sonuç Kümeleri

Bu ortak meta sonucunda sonuçları meta verileri ile her sütun için bir satır kümesi döndürülür. Her satır, aşağıdaki bölümde açıklandığı biçimde Sütun nullability ve türünü açıklar. İlk ifade her denetim yolu yoksa, bir sonuç ile sıfır satır kümesi döndürülür.

Sütun adı

Veri türü

Açıklama

is_hidden

bit NOT NULL

Sütun bilgi amaçlı tarama için eklenen ekstra bir sütun olduğunu ve o aslında sonuç kümesinde görünmediğini gösterir.

column_ordinal

int NOT NULL

Sonuç kümesinde sütun sıralı konumunu içerir. İlk sütunun konumunu 1 olarak belirlenir.

name

sysname NULL

Bir ad belirlenebilir, sütun adını içerir. Aksi durumda, null içerecektir.

IS_NULLABLE

bit NOT NULL

Sütun boş değerlere izin veriyorsa, o belirlenemiyorsa sütun Boşlara ver, sütun boş değerlere izin vermez, 0 ve 1 veriyorsa 1 değerini içerir.

system_type_id

int NOT NULL

Belirtilen sütun veri türü system_type_id içeren sys.types. Düz-se bile system_type_name sütun null, döndürür clr türleri için bu sütunun değeri 240 döndürecektir.

system_type_name

nvarchar(256) NULL

Sütun veri türü için belirtilen bağımsız değişken (örneğin, uzunluk, duyarlık, ölçek) ve adı içerir. Veri türü kullanıcı tanımlı ad türü ise, temeldeki sistem türü burada belirtilir. Eğer kullanıcı tanımlı bir clr türü, bu sütunda null döndürdü.

max_length

smallint NOT NULL

Sütun en fazla uzunluğu (bayt cinsinden).

-1 = Column data type is varchar(max), nvarchar(max), varbinary(max), or xml.

İçin textsütunlar, max_lengthdeğeri 16 veya değeri ayarlanmış olacak sp_tableoption 'text in row'.

duyarlık

tinyint NOT NULL

Sayısal tabanlı varsa sütun duyarlığını. Aksi takdirde 0 döndürür.

ölçek

tinyint NOT NULL

Sayısal tabanlı varsa sütunun ölçek. Aksi takdirde 0 döndürür.

collation_name

sysname NULL

Eğer karakter tabanlı sütun harmanlama adı. Aksi takdirde null döndürür.

user_type_id

int NULL

clr türleri için takma, user_type_id sys.types belirtilen sütun veri türü bulunmaktadır. Aksi takdirde null olur.

user_type_database

sysname NULL

clr ve türleri için diğer ad türü tanımlandığı veritabanı adını içerir. Aksi takdirde null olur.

user_type_schema

sysname NULL

clr ve türleri için diğer ad türü tanımlandığı şemasının adını içerir. Aksi takdirde null olur.

user_type_name

sysname NULL

clr ve türleri için diğer ad türünün adını içerir. Aksi takdirde null olur.

assembly_qualified_type_name

nvarchar(4000)

clr türleri için montaj ve türünü tanımlayan sınıf ismini döndürür. Aksi takdirde null olur.

xml_collection_id

int NULL

Belirtilen sütun veri türü xml_collection_id içeren sys.columns. Döndürülen türü xml Şeması derlemesi ile ilişkili değilse bu sütun null döndürür.

xml_collection_database

sysname NULL

Bu türüyle ilişkili xml şema koleksiyonu tanımlandığı veritabanı içerir. Döndürülen türü xml Şeması derlemesi ile ilişkili değilse bu sütun null döndürür.

xml_collection_schema

sysname NULL

Bu türüyle ilişkili xml şema koleksiyonu içinde tanımlanan şema içerir. Döndürülen türü xml Şeması derlemesi ile ilişkili değilse bu sütun null döndürür.

xml_collection_name

sysname NULL

Bu türüyle ilişkili xml şema koleksiyonu adı bulunur. Döndürülen türü xml Şeması derlemesi ile ilişkili değilse bu sütun null döndürür.

is_xml_document

bit NOT NULL

1 Döndürülen veri türü xml değil ve o türü (bir kök düğüm dahil) tam bir xml belgesi, bir xml parçası olarak karşı olduğu garanti verir). Aksi takdirde 0 döndürür.

is_case_sensitive

bit NOT NULL

Sütun büyük küçük harf duyarlı dize türü ve 0 ise değilse 1 döndürür.

is_fixed_length_clr_type

bit NOT NULL

Yoksa sütunun sabit uzunlukta clr türü ve 0 1 döndürür.

Source_Server

sysname

Bu sonuç sütunu (uzak bir sunucudan kaynaklanıyorsa) döndürülen kaynak sunucu adı. Görünen adı verilen sys.servers. Döndürür null sütun yerel sunucuda kaynaklanıyorsa ya da onu bulamazsa, hangi sunucunun o kaynaklanan belirledi. Tarama bilgilerini istenirse sadece doldurulur.

source_database

sysname

Bu sonuç sütunu tarafından döndürülen kaynak veritabanının adı. Veritabanı belirlenemiyorsa null döndürüyor. Tarama bilgilerini istenirse sadece doldurulur.

source_schema

sysname

Bu sonuç sütunu tarafından döndürülen kaynak şema adı. Şema belirlenemiyorsa null döndürüyor. Tarama bilgilerini istenirse sadece doldurulur.

source_table

sysname

Bu sonuç sütunu tarafından döndürülen kaynak tablo adı. Tablo belirlenemiyorsa null döndürüyor. Tarama bilgilerini istenirse sadece doldurulur.

source_column

sysname

Sütunu tarafından döndürülen kaynak sütun adı. Sütun belirlenemiyorsa null döndürüyor. Tarama bilgilerini istenirse sadece doldurulur.

is_identity_column

bit NULL

Sütunu kimlik sütunu ve 0 değilse 1 döndürür. Sütun kimlik sütunu olup belirlenemez, null döndürüyor.

is_part_of_unique_key

bit NULL

Sütun (ve birincil benzersiz kısıtlama dahil) benzersiz bir dizin ve 0 bir parçası ise eğer 1 döndürür. Sütunun benzersiz bir dizin parçası olduğu belirlenemiyor, null döndürüyor. Tarama bilgilerini istenirse sadece doldurulur.

is_updateable

bit NULL

Sütun güncelleştirilebilir ise 1 ve 0 verir DEĞIL. Sütun güncelleştirilebilir belirlenemez, null döndürüyor.

is_computed_column

bit NULL

Sütun hesaplanan bir sütun ve 0 değilse 1 döndürür. Sütun hesaplanan bir sütun olduğunu belirlenemez, null döndürüyor.

is_sparse_column_set

bit NULL

Sütun seyrek sütun ve 0 değilse 1 döndürür. Sütun seyrek sütun kümesi bir parçası olduğunu belirlenemez, null döndürüyor.

ordinal_in_order_by_list

smallint NULL

order by listesinde bu sütunun konumunu. Sütunu order by listesinde görünmüyorsa veya order by listesinde benzersiz olarak belirlenemiyorsa döndürür null.

order_by_list_length

smallint NULL

order by listesinde uzunluğu. order by listesinde ise veya order by listesinde benzersiz olarak belirlenemiyorsa döndürür null. Not Bu değer tarafından döndürülen tüm satırlar için aynı olacaktır sp_describe_first_result_set.

order_by_is_descending

smallint NULL

Ordinal_in_order_by_list null değilse order_by_is_descending sütun raporları için bu sütunu order by yan tümcesi yönünde. Aksi takdirde null bildirir.

tds_type_id

int NOT NUL

Dahili kullanım için.

tds_length

int NOT NUL

Dahili kullanım için.

tds_collation_id

int NUL

Dahili kullanım için.

tds_collation_sort_id

tinyint NUL

Dahili kullanım için.

Açıklamalar

sp_describe_first_result_set garanti prosedürü (kuramsal) ilk sonuç kümesi meta verileri döndürürse sonra toplu iş toplu a ve bu toplu iş (a) daha sonra ise idam olacak ya da (1) en iyi duruma getirme zaman hata yükseltir, (2) çalışma zamanı hata yükseltir, (3) sonuç kümesi veya (4) verir bir ilk sonuç kümesi tarafından tanımlanan aynı meta verileri ile sp_describe_first_result_set.

Adı, nullability ve veri türü farklı olabilir. Eğer sp_describe_first_result_set toplu iş yürütme yok-sonuç kümeleri döndürür olduğunu garanti bir boş sonuç kümesi döndürür.

Orada bu garanti varsaymaktadır sunucusunda hiçbir ilgili şema değişiklikleri. İlgili şema değişiklikleri sunucuda değil geçici bir tablo oluşturmak eklemek veya Tablo değişkenleri arasındaki toplu a, sp_describe_first_result_set olarak adlandırılır ve toplu b. tarafından yapılan şema değişiklikleri içeren yürütme sırasında döndürülen sonuç kümesinden saati

sp_describe_first_result_set aşağıdaki durumların hiçbirinde, bir hata döndürür.

  • Giriş @ tsql geçerli değilse, Transact-SQLtoplu. Geçerlilik belirlenen ayrıştırma ve analiz Transact-SQLtoplu. Sorgu en iyi duruma getirme veya yürütme sırasında toplu işi tarafından neden hataları belirlerken dikkate alınmaz mı Transact-SQLtoplu geçerli.

  • @ Params null olmayan bir dize içeriyorsa, bu bildirimi sözdizimi kurallarına göre geçerli dize parametreleri için değil veya bir dize içeriyorsa, birden çok kez herhangi bir parametre bildirir.

  • Eğer giriş Transact-SQLtoplu @ params içinde bildirilmiş bir parametre olarak aynı adlı bir yerel değişken ilan etti.

  • Eğer geçici bir tablo deyimi kullanır.

  • Sorguyu sonra sorgulanan kalıcı tablo oluşturulmasını içerir.

Tüm diğer denetimleri başarılı, tüm olası denetim akış yolları giriş toplu iş içinde kabul edilir. Bu alır içine hesap tüm denetim akış (goto, IF/else, süre, ve Transact-SQLdeneyin ve catch bloğu) yanı sıra tüm yordamlar, dinamik Transact-SQLtoplu işlemleri veya Tetikleyiciler giriş toplu işleminden bir exec deyimi, ateş ddl Tetikleyiciler ateşlenmesine ddl deyimi veya hedef tablo veya geçişli eylem yabancı anahtar kısıtlaması nedeniyle değiştirilen Tablo Tetikleyicileri harekete neden dml deyimi tarafından çağrılan. Birçok olası denetim yolları durumunda, bir algoritma bir noktada durur.

Her denetim akış yolu için (eğer varsa) ilk ifade, bir sonuç kümesi tarafından belirlenir döndürür sp_describe_first_result_set.

Birden çok olası ilk deyimi bir toplu bulunduğunda, sonuçlarının sütunları, sütun adı, nullability ve veri türü sayısı farklı olabilir. Bu farklılıkları nasıl işleneceğini burada ayrıntılı olarak açıklanmıştır:

  • Sütun sayısı farklıysa, bir hata atılır ve sonuç döndürülür.

  • Sütun adı farklıysa, döndürülen sütun adı null olarak ayarlanır.

  • O nullability farklıdır, döndürülen nullability boş değerlere izin verir.

  • Veri türü farklıysa, bir hata atılır ve aşağıdaki durumlar haricinde hiçbir sonuç döndürülür:

    • varchar(a)için varchar(a')burada bir ' >bir.

    • varchar(a) - varchar(max)

    • nvarchar(a)için nvarchar(a')burada bir ' >bir.

    • nvarchar(a) - nvarchar(max)

    • varbinary(a)için varbinary(a')burada bir ' >bir.

    • varbinary(a) - varbinary(max)

İzinler

@ Tsql bağımsız yürütme izni gerektirir.

Örnekler

Tipik örnekler

A.Basit bir örnek

Aşağıdaki örnek, sonuç kümesini tek bir sorgudan döndürülen açıklar.

sp_describe_first_result_set @tsql = N'SELECT object_id, name, type_desc FROM sys.indexes'

sp_describe_first_result_set @tsql = N'SELECT object_id, name, type_desc FROM sys.indexes'

Aşağıdaki örnek, sonuç kümesini bir parametre içeren tek bir sorgudan döndürülen gösterir.

sp_describe_first_result_set @tsql = 
N'SELECT object_id, name, type_desc 
FROM sys.indexes 
WHERE object_id = @id1'
, @params = N'@id1 int'

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 üç örnekte farklı Gözat bilgi modları arasındaki en önemli fark göstermektedir. Sorgu sonuçlarında yalnızca ilgili sütunları dahil edilmiş.

Hiçbir bilgi gösteren 0 kullanarak örnek döndürülür.

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;

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;

Sonuç kümesi buradadır.

is_hidden

column_ordinal

name

source_schema

source_table

source_column

is_part_of_unique_key

0

1

B3

NULL

NULL

NULL

NULL

Sanki o sorgu için bir seçenek içerir örneği 1 gösteren bilgi verir.

EXEC sp_describe_first_result_set N'SELECT b2 AS b3 FROM v', null, 1

EXEC sp_describe_first_result_set N'SELECT b2 AS b3 FROM v', null, 1

Sonuç kümesi buradadır.

is_hidden

column_ordinal

name

source_schema

source_table

source_column

is_part_of_unique_key

0

1

B3

dbo

t

B1

0

1

2

bir

dbo

t

bir

1

Bir imleç hazırlıyoruz sanki analiz gösteren 2 kullanan örnek.

EXEC sp_describe_first_result_set N'SELECT b2 AS b3 FROM v', null, 2

EXEC sp_describe_first_result_set N'SELECT b2 AS b3 FROM v', null, 2

Sonuç kümesi buradadır.

is_hidden

column_ordinal

name

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

Problem örnekleri

Aşağıdaki örnekler, tüm örnekleri için iki tablo kullanın. Örnek tabloları oluşturmak için aşağıdaki deyimleri yürütmek.

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);

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);

Hata sütun sayısı farklı olduğundan

Bu örnekte ilk sonuç kümeleri farklı olası sütun sayısı.

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.'

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.'

Hata veri türleri farklı olduğundan

Sütun türleri farklı farklı mümkün ilk sonuç kümeleri.

sp_describe_first_result_set @tsql = 
N'
IF(1=1)
    SELECT a FROM t1;
ELSE
    SELECT a FROM t2;

sp_describe_first_result_set @tsql = 
N'
IF(1=1)
    SELECT a FROM t1;
ELSE
    SELECT a FROM t2;

Sonuç: hata türleri eşleşmeyebilir ( int vs. smallint).

Sütun adı belirlenemedi

İlk sonuç kümeleri tarafından aynı değişken uzunlukta türü, nullability ve sütun adlarının uzunluğu farklı olası sütunlar:

sp_describe_first_result_set @tsql = 
N'
IF(1=1)
    SELECT b FROM t1;
ELSE
    SELECT d FROM t2; '

sp_describe_first_result_set @tsql = 
N'
IF(1=1)
    SELECT b FROM t1;
ELSE
    SELECT d FROM t2; '

Sonuç: <bilinmeyen sütun adı> varchar(20) NULL

Rumuz ile aynı olmak zorunda sütun adı

Önceki ile aynı ancak sütun sütun rumuz ile aynı ada sahip.

sp_describe_first_result_set @tsql = 
N'
IF(1=1)
    SELECT b FROM t1;
ELSE
    SELECT d AS b FROM t2;'

sp_describe_first_result_set @tsql = 
N'
IF(1=1)
    SELECT b FROM t1;
ELSE
    SELECT d AS b FROM t2;'

Sonuç: bvarchar(20) NULL

Hata nedeniyle sütun türleri eşleşmeyebilir

Sütun türleri farklı farklı mümkün ilk sonuç kümeleri.

sp_describe_first_result_set @tsql = 
N'
IF(1=1)
    SELECT b FROM t1;
ELSE
    SELECT c FROM t1;'

sp_describe_first_result_set @tsql = 
N'
IF(1=1)
    SELECT b FROM t1;
ELSE
    SELECT c FROM t1;'

Sonuç: hata türleri eşleşmeyebilir (varchar(10) vs. nvarchar(10)).

Sonuç kümesi hata döndürebilir

İlk sonuç kümesi hata ya da sonuç kümesidir.

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.;'

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.;'

Sonuç: birint NULL

Bazı kod yolları hiçbir sonuç

İlk sonuç kümesi null veya bir sonuç kümesi olur.

sp_describe_first_result_set @tsql = 
N'
IF(1=1)
    RETURN;
SELECT a FROM t1;'

sp_describe_first_result_set @tsql = 
N'
IF(1=1)
    RETURN;
SELECT a FROM t1;'

Sonuç: birint NULL

Dinamik sql sonuç

İlk sonuç değişmez bir dize olduğundan keşfedilebilir dinamik sql kümesidir.

sp_describe_first_result_set @tsql = 
N'EXEC(N''SELECT a FROM t1'');'

sp_describe_first_result_set @tsql = 
N'EXEC(N''SELECT a FROM t1'');'

Sonuç: birINT NULL

Dinamik sql sonuç hatası

İlk sonuç kümesi dinamik sql nedeniyle tanımsızdır.

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); '

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); '

Sonuç: hata. Sonuç nedeniyle dinamik sql bulunabilir değildir.

Kullanıcı tarafından belirtilen sonuç

İlk sonuç kümesi, kullanıcı tarafından el ile belirtilir.

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)
    ); '

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)
    ); '

Sonuç: Sütun1bigint NOT NULL

Belirsiz sonuç kümesi tarafından neden hata

Bu örnek Kullanıcı1 adlı başka bir kullanıcı varsayılan şema s1 sütunlarla t1 adında bir tablo olduğunu varsayar (bir int NOT NULL).

sp_describe_first_result_set @tsql = 
N'
    IF(@p > 0)
    EXECUTE AS USER = ''user1'';
    SELECT * FROM t1;'
, @params = N'@p int'

sp_describe_first_result_set @tsql = 
N'
    IF(@p > 0)
    EXECUTE AS USER = ''user1'';
    SELECT * FROM t1;'
, @params = N'@p int'

Sonuç: hata. t1dbo.t1 ya da s1.t1, her biri farklı sayıda sütun olabilir.

Hatta belirsiz sonuç kümesi ile neden

Aynı varsayımlar önceki örnek olarak kullanın.

sp_describe_first_result_set @tsql = 
N'
    IF(@p > 0)
    EXECUTE AS USER = ''user1'';
    SELECT a FROM t1;'

sp_describe_first_result_set @tsql = 
N'
    IF(@p > 0)
    EXECUTE AS USER = ''user1'';
    SELECT a FROM t1;'

Sonuç: bir int NULLhem dbo.t1.a hem de s1.t1.a türü olduğundan int ve farklı nullability.

Ayrıca bkz.

Başvuru

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)