Die sp_describe_first_result_set
gespeicherte Prozedur werden Sie die Spaltennamen geben und viel mehr für jede Abfrage. Sie müssen die fragliche Abfrage einfach an den Parameter @tsql
übergeben. Bitte beachten Sie die folgende Verwendung der gespeicherten Prozedur:
DECLARE @queryDescription TABLE
(
s_hidden bit NULL
,column_ordinal int NULL
,name sysname NULL
,is_nullable bit NULL
,system_type_id int NULL
,system_type_name nvarchar(256) NULL
,max_length smallint NULL
,precision tinyint NULL
,scale tinyint 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) NULL
,xml_collection_id int NULL
,xml_collection_database sysname NULL
,xml_collection_schema sysname NULL
,xml_collection_name sysname NULL
,is_xml_document bit NULL
,is_case_sensitive bit NULL
,is_fixed_length_clr_type bit 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 NULL
,tds_length int NULL
,tds_collation_id int NULL
,tds_collation_sort_id tinyint NULL
)
DECLARE @query NVARCHAR(MAX) = 'SELECT EmployeeName, EmployeeAddress, EmployeeAge FROM dbo.Employee'
INSERT INTO @queryDescription
EXEC sp_describe_first_result_set @tsql = @query
SELECT Name AS ColumnName
,system_type_name AS DataTypeName
,column_ordinal AS Ordinal
FROM @queryDescription
siehe sys.tables und sys.columns. – scsimon
Im Satz "Ich möchte dynamisch ..." können Sie bitte "Ich" definieren? Ich nehme an, Sie meinen Sie nicht, eine Person (da Sie die Spaltennamen mit Ihren Augen leicht scannen können). Sprechen Sie über ein Stück Code? In welcher Sprache ist es geschrieben und wie hat es die Ergebnismenge erhalten? –
Möchten Sie die Spaltennamen des zugrunde liegenden Datenbankobjekts (d. H. Der Tabelle usw.) oder möchten Sie die Spaltennamen der Ergebnismenge der Abfrage (die willkürliche Legal-Identifier-Namen enthalten kann)? – SlimsGhost