0

У меня есть отчет SSRS, который вызывает одну хранимую процедуру для выполнения, которая обновляет таблицу в базе данных. Затем я запускаю отчет по данным в таблице, используя другую хранимую процедуру.Exec Основная процедура в SSRS с параметром

Что бы я хотел сделать, чтобы передать параметр из отчета в Хранимую процедуру. Вот пример того, что я делаю.

StoredProcedure 
Select 
HospCode 
TxnCode 
TxnAmt 
into 
TxnData 
From 
Data 
Where 
TxnDate Between @Start and @End 

Report- 
Exec StoredProcedure 

Select 
HospCode 
Sum(TxnAmt) Over(Partition By HospCode) 
From 
TxnData 
Order By HospCode 

Да Параметры указаны в SP. Я хотел бы, чтобы Пользователь, выполнявший отчет, мог выбрать диапазон дат, затем передайте его в Хранимую процедуру.

Я могу сделать это с помощью отдельных процедур очень легко, но Хранимая процедура - это строительный блок, который будет использовать несколько отчетов - вместо того, чтобы копировать и вставлять или перепечатывать, я просто хотел бы вызвать его.

Возможно ли это.

Спасибо, Скотт

ответ

0

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

Тестовые данные, полученные для тестирования ..

create table Data (HospCode int, TxnCode int, TxnAmt money, TxnDate date) 

insert into Data (HospCode, TxnCode, TxnAmt, TxnDate) 
select 1, 1, 10, '2014-09-11' 
union all 
select 1, 1, 10, '2014-09-12' 
union all 
select 1, 2, 10, '2014-09-11' 
union all 
select 2, 2, 10, '2014-09-11' 

Base Хранимая процедура: Вам нужно будет создать временную таблицу для возврата данных из процедуры к югу сохраняется. Убедитесь, что в таблице temp должны быть одинаковые поля и типы данных, возвращаемые из вспомогательной хранимой процедуры.

CREATE PROC dbo.someSPbase(@StartDate DATE, @EndDate DATE) 
AS 
BEGIN 

    IF OBJECT_ID('TempDB.dbo.#TempData') IS NOT NULL 
     DROP TABLE #TempData; 

    CREATE TABLE #TempData(
       HospCode int 
       , TxnCode int 
       , TxnAmt money 
      ); 

    INSERT INTO #TempData(HospCode, TxnCode, TxnAmt) 
    EXEC dbo.someSPSub1 @StartDate, @EndDate 


    SELECT HospCode 
     , SUM(TxnAmt) OVER (Partition By HospCode) AS TxnAmtTotal 
     FROM #TempData; 
END 

Суб хранимая процедура вызывается из базовой хранимой процедуры выше:

CREATE PROC dbo.someSPSub1(@StartDate DATE, @EndDate DATE) 
AS 
BEGIN 
     Select 
      HospCode 
      ,TxnCode 
      ,TxnAmt 
      From Data 
      Where TxnDate Between @StartDate and @EndDate 

END