#sql-server #sql-server-2008 #sql-server-2008-r2
#sql-сервер #sql-server-2008 #sql-server-2008-r2
Вопрос:
Я создал небольшую сложную хранимую процедуру на SQL Server 2008 R2, и этот SP также содержит некоторые пользовательские функции. В этих UDF и в самом SP есть несколько циклов while внутри них.
Я хотел бы определить, сколько раз что-то было зациклено, когда я вызываю этот SP.
Какие-либо изменения я могу это сделать?
Комментарии:
1. Конечно, просто поместив переменную с областью действия для всей функции в часть цикла и увеличивая ее на единицу каждый раз. Затем прочитайте значение в конце процедуры?
2. @Widor Я в основном ищу автоматическое решение. Я надеялся, что, возможно, в SQL Profiler есть что-то, что позволяет это сделать.
Ответ №1:
У SQL Profiler нет никакого способа сделать это, насколько я знаю. Что я бы сделал, так это создал временную таблицу (при условии, что вас интересует только количество итераций для одного соединения) для увеличения одной переменной count, а затем вы можете вывести значение, которое хранится в этой временной таблице в конце цикла.
Что-то вроде:
create table #countTable
(
id int not null,
countvar int not null
)
go
insert into #countTable
select 1, 0
go
-- your stored proc call here
-- during your iterations at the end, call this:
update #countTable
set countvar = countvar 1
where id = 1
go
-- ...your stored proc ends now you want the count
select countvar
from #countTable
where id = 1
go
Я создал id
поле на случай, если вам может понадобиться более одного «счетчика».