Да, функционально это одно и то же. Насколько я знаю, между ними нет существенных различий в производительности.
Единственное, на что следует обратить внимание, это то, что, если у вас есть set rowcount
, это будет сохраняться в течение всего срока действия соединения, поэтому убедитесь, что вы сбросили его на 0
, как только закончите.
РЕДАКТИРОВАТЬ (опубликовать комментарий Мартина)
Область действия SET ROWCOUNT
предназначена только для текущей процедуры. Это включает процедуры, вызываемые текущей процедурой. Он также включает динамический SQL, выполняемый с помощью EXEC
или SP_EXECUTESQL
, поскольку они считаются "дочерними" областями.
Обратите внимание, что SET ROWCOUNT
находится в области действия BEGIN/END
, но выходит за пределы этого.
create proc test1
as
begin
begin
set rowcount 100
end
exec ('select top 101 * from master..spt_values')
end
GO
exec test1
select top 102 * from master..spt_values
Результат = 100 строк, затем 102 строки