2009-02-06 3 views
0

У меня есть несколько хранимых процедур, которые используются для создания отчетов. Я пытаюсь создать панель отчетов, которая покажет, сколько записей в каждом отчете.T-SQL 2005: подавление вывода результатов

SPs подробно описаны в таблице, в которой подробно описывается, в каком порядке их следует запускать.

У меня есть панель инструментов, в которой я использую курсор для доступа к таблице базы данных, выполняю каждый отчет SP, а затем сохраняю @@ rowcount в таблицу темп, которая составляет основу панели инструментов.

Я могу отключить подсчет строк, используя set rowcoun в верхней части каждого SP, но я не могу найти способ остановить набор результатов, который будет удален из команды EXEC sp_my_sp.

 
WHILE @@FETCH_STATUS = 0 
BEGIN 
    declare @x as int 
    exec @SP_name @x OUT 
    select @x 
    insert into @results (Short___name,Records) values (@shortname,@x) 
    FETCH NEXT FROM myCursor INTO @ShortName, @SP_Name,@Group,@Order 
END 

Где-то там мне нужно подавить или перенаправить вывод. Я не хочу делать это внутри фактического отчета SP.

Единственным решением, с которым я столкнулся, является добавление входного параметра в каждый SP, чтобы сказать, выполняется ли он для панели мониторинга или для отчета. Вместо того, чтобы напрямую возвращать результаты, вставьте его в таблицу с внутренней памятью и затем сообщите в таблицу памяти ТОЛЬКО, если мы работаем для отчетов - не приятно, поскольку кто-то должен помнить, что нужно делать это для каждого нового SP

ТИА

Obiron

ответ

1

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

Расширяя идею входного параметра в SP, не могли бы вы просто добавить некоторую логику (оператор CASE или IF) для вызова Select Count() над скриптом, когда он поступает из панели управления?

Это потребует добавления к каждому SP, но пока оно документировано, это не должно вызывать слишком много проблем для будущих разработчиков.

Смежные вопросы