2016-03-28 7 views
4

Wenn ich eine zufällige Abfrage haben, und möchten die Spaltennamen aus dieser Abfrage zurück:Get Wählen Sie Spaltennamen aus der dynamischen Abfrage in SQL Server

SELECT 1 ONE, 2 TWO, 'THREE' THREE 

Wie kann ich die Spaltennamen zurückgeben? Vielleicht sogar der Spaltendatentyp.

Ich kann dies in C# tun, aber ich suche nach einer Möglichkeit, das alles rein innerhalb von Frau Sql zu tun.

Ist das möglich, wenn ja wie?

Müsste ich eine temporäre Tabelle erstellen, dann überprüfen Sie die Info-Schema-Tabelle? Oder kann ich es anders machen?

+0

Ich bin daran interessiert, wie dies in alten SQL-Versionen – Sherlock

+0

@Katana Ich fügte eine zusätzliche Zeile zu meiner Antwort, die helfen könnte. – DavidG

+0

@DavidG danke zusätzliches Wissen für mich, ich hatte FMTONLY vorher hinzugefügt, als ich auf Problem bei der Kommunikation zwischen Entity Framework und meinem SP stieß – Sherlock

Antwort

5

Sie können sp_describe_first_result_set verwenden, um die von einer beliebigen SQL-Anweisung zurückgegebenen Spalten zu beschreiben. Zum Beispiel:

EXEC sp_describe_first_result_set @tsql = 'SELECT 1 ONE, 2 TWO, ''THREE'' THREE' 

Sie werden Ergebnisse wie diese fiddle erhalten. Für ältere Versionen von SQL Server können Sie sich auch SET FMTONLY ON ansehen.

Verwandte Themen