Как я возвращаю пустой набор результатов из процедуры с помощью T-SQL?

Я интересуюсь возвратом пустого набора результатов из хранимых процедур SQL Server в определенных событиях.

Намеченное поведение состоит в том что L2SQL DataContext.SPName().SingleOrDefault() приведет к нулевому значению CLR.

Я в настоящее время использую следующее решение, но я не уверен, считали ли это плохой практикой, опасность производительности (я не мог бы найти один путем чтения плана выполнения), или если существует просто лучший путь:

SELECT * FROM [dbo].[TableName]
WHERE 0 = 1;

План выполнения является постоянным сканированием с тривиальной стоимостью, связанной с ним.

Причина я спрашиваю это вместо того, чтобы просто не выполнить никого ВЫБОРЫ, состоит в том, потому что я заинтересован предыдущий ВЫБОР @scalar, или операторы SELECT INTO могли заставить непреднамеренные наборы результатов подаваться назад L2SQL. Я не волнуюсь ни по чему?

26
задан Jesse Hallam 9 May 2010 в 00:56
поделиться

3 ответа

Если вы хотите просто получить метаданные набора результатов без какой-либо фактической строки, используйте SET FMTONLY ON .

11
ответ дан 28 November 2019 в 06:15
поделиться

Это разумный подход. Другой вариант:

SELECT TOP 0 * FROM [dbo].[TableName]
25
ответ дан 28 November 2019 в 06:15
поделиться

Это вполне разумный подход.

Чтобы уменьшить беспокойство по поводу производительности (которого вообще не должно быть - сервер достаточно умен, чтобы избежать сканирования таблицы для 1=0), выберите таблицу, которая очень мала и не используется интенсивно - я уверен, что в вашей схеме БД есть такая.

2
ответ дан 28 November 2019 в 06:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: