Я разрабатываю отчет в Sql Server Reporting Services 2005, подключившись к базе данных Oracle 11g. По мере того как вы публикуете ответы, возможно, это поможет узнать, что я владею MSSQL Server и неопытным в Oracle.Отчет SSRS от Oracle DB - использование хранимой процедуры
У меня есть несколько вложенных подписок и вам нужно использовать сводные данные во внешних отчетах и одни и те же данные, но подробно во внутренних отчетах. Чтобы избавить сервер БД от нескольких исполнений, я подумал, что сначала запустил некоторые временные таблицы, а затем запросил их несколько раз в отчете и вложенных отчетах.
В SSRS наборы данных, очевидно, выполняются в том порядке, в котором они отображаются в файле RDL. И у вас может быть набор данных, который не возвращает набор строк. Поэтому я создал хранимую процедуру для заполнения четырех временных таблиц и сделал это первым набором данных в моем отчете. Этот SP работает, когда я запускаю его из SQLDeveloper, и я могу запросить данные из временных таблиц. Однако это, похоже, не сработало, потому что SSRS, по-видимому, не повторно использовал один и тот же сеанс, поэтому, хотя глобальные временные таблицы были созданы с помощью ON COMMIT PRESERVE ROWS, мои наборы данных были пустыми.
Я перешел на использование «реальных» таблиц, и теперь я передаю дополнительный параметр, GUID в форме строки, уникально сгенерированный при каждом новом исполнении, который является частью первичного ключа каждой таблицы, поэтому я могу вернуться просто строки для этого выполнения.
Запуск этого из Sql Developer отлично работает, например:
DECLARE
ActivityCode varchar2(15) := '1208-0916 ';
ExecutionID varchar2(32) := SYS_GUID();
BEGIN
CIPProjectBudget (ActivityCode, ExecutionID);
END;
Никогда не забывайте, что в этом примере я не знаю, с GUID, это просто доказывает, что это работает, потому что строки вставляются в мои четыре таблицы.
Но в отчете SSRS я все еще не получаю никаких строк в своих наборах данных, и разработчик SQL подтверждает, что никакие строки не вставлены.
Так что я имею в виду вдоль линий:
- Oracle использует неявные транзакции и мои изменения не получает совершено?
- Несмотря на то, что я могу доказать, что SP, исполняемый не rowset, выполняется (потому что, если я не укажу на отображение параметров, он жалуется на время рендеринга отчета о том, что не имеет достаточных параметров), возможно, это не действительно. Каким-то образом.
- Неверный порядок выполнения не является проблемой, или строки появятся в таблицах, а это не так.
Меня интересуют любые идеи о том, как это осуществить (особенно в том, что несколько раз не выполнялись основные запросы). Я перепроектирую весь свой отчет. Я перестану использовать хранимую процедуру. Предложите все, что угодно! Мне просто нужна помощь, чтобы эта работа работала, и я застрял.
Если вы хотите получить более подробную информацию, в моем отчете SSRS у меня есть объект List (это контейнер, который повторяется один раз для каждой строки в наборе данных), который имеет некоторые значения заголовков, а затем содержит подчиненный отчет. В конце концов, будет четыре общих отчета: один основной отчет с тремя вложенными вложенными отчетами. Каждый подчиненный отчет будет находиться в списке родительского отчета.
вы должны поместить содержимое своего комментария в свой ответ, чтобы люди могли находить его более легко (и поэтому вы можете получить больше отзывов!). ;) –
@ AJ: Спасибо! – ErikE