Я интересуюсь возвратом пустого набора результатов из хранимых процедур SQL Server в определенных событиях.
Намеченное поведение состоит в том что L2SQL DataContext.SPName().SingleOrDefault()
приведет к нулевому значению CLR.
Я в настоящее время использую следующее решение, но я не уверен, считали ли это плохой практикой, опасность производительности (я не мог бы найти один путем чтения плана выполнения), или если существует просто лучший путь:
SELECT * FROM [dbo].[TableName]
WHERE 0 = 1;
План выполнения является постоянным сканированием с тривиальной стоимостью, связанной с ним.
Причина я спрашиваю это вместо того, чтобы просто не выполнить никого ВЫБОРЫ, состоит в том, потому что я заинтересован предыдущий ВЫБОР @scalar, или операторы SELECT INTO могли заставить непреднамеренные наборы результатов подаваться назад L2SQL. Я не волнуюсь ни по чему?
Если вы хотите просто получить метаданные набора результатов без какой-либо фактической строки, используйте SET FMTONLY ON
.
Это разумный подход. Другой вариант:
SELECT TOP 0 * FROM [dbo].[TableName]
Это вполне разумный подход.
Чтобы уменьшить беспокойство по поводу производительности (которого вообще не должно быть - сервер достаточно умен, чтобы избежать сканирования таблицы для 1=0), выберите таблицу, которая очень мала и не используется интенсивно - я уверен, что в вашей схеме БД есть такая.