Ограничить набор результатов только значением первого столбца в первой строке? - PullRequest
1 голос
/ 25 марта 2020

Я использую Microsoft SQL Server 2016.

У меня есть динамическая c SQL ситуация, когда входящий запрос может быть командой SQL, или это может быть сохраненный процедура. Мне нужно иметь возможность получить первое значение в верхнем левом углу набора результатов. Я нашел способ сделать это для SQL, но не для хранимых процедур.

Для сценариев SQL я использую sp_describe_first_result_set, чтобы определить количество столбцов и создать соответствующий сценарий с нулевыми столбцами для объединения вот так:

select null as C1, null as C2 where 1=0 union all select 'hello', 'world'

, что делает довольно простым получение только top 1 C1.

С помощью хранимых процедур, однако я не могу использовать это же техника, потому что иногда хранимые процедуры имеют разные пути возврата, что приводит к несовместимым результатам для sp_describe_first_result_set. Я не могу вставить набор результатов во временную таблицу, потому что я не знаю, сколько или каких столбцов будет.

...