2016-03-28 11 views
4

でダイナミッククエリから選択列名を取得します:SQL Serverの

SELECT 1 ONE, 2 TWO, 'THREE' THREE 

はどのようにして、列名を返すことができますか?たぶん列データ型でさえ。

私はこれをC#で行うことができますが、私はこれをMs Sqlの中だけで行う方法を探しています。

これは可能でしょうか?

一時テーブルを作成してから、情報スキーマテーブルをチェックする必要がありますか?それとも別の方法でやってもいいですか?

+0

私は古いSQLバージョンでこれを行う方法に興味があります – Sherlock

+0

@Katana私は私の答えに役立つかもしれない余分な行を追加しました。 – DavidG

+0

@DavidGは、エンティティフレームワークと私のSPの間の通信に問題が発生したときに私が以前にFMTONLYを追加してくれたことに感謝します。 – Sherlock

答えて

5

sp_describe_first_result_setを使用すると、任意のSQL文から返される列を記述できます。例:

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

fiddleのような結果が得られます。

古いバージョンのSQL Serverの場合は、SET FMTONLY ONも参照できます。