Я использую 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
. Я не могу вставить набор результатов во временную таблицу, потому что я не знаю, сколько или каких столбцов будет.